Datum aus DB und Tage mit strtotime verrechnen

exitboy

Erfahrenes Mitglied
Hallo,

ich möchte eine Art GameTime Zahlungsstatusabfrage erstellen, wie man dies aus Online Game Accounts kennt.

$getCreated ist das Anlegedatum des Accounts in einer MySQL DB als DATE gespeichert.

Code:
$dbresult = strtotime("$getCreated"); // gibt 2005-11-15 aus
echo $dbresult = date ("Y-m-d", $dbresult);

$dbnow = strtotime ("now");             // gibt 2006-01-15 aus
echo $dbnow = date ("Y-m-d", $dbnow);

$dbaktuell = $dbnow-$dbresult;        // gibt 1970-01-01aus, obwohl ich hier die Tager ermittelt haben wollte
echo $dbaktuell = date ("Y-m-d", $dbaktuell);

Jetzt wollte ich hier die Differenz in Tagen ermitteln. Leider klappt das nicht ganz so wie es funktionieren sollte. Dachte auch daran, strtotime eine Zeitvorher schon vorzugeben, indem ich es wie folgt vorgebe:
Code:
$dbdate = strtotime("$dbnow+$totaldays days");

$totaldays sind hierbei 50 Tage, als Zahl 50 hinterlegt.

Kann ich strtotime nicht ein Datum vorgeben und damit weiterrechnen?

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

ZIEL war es, zu erfragen, ob der User seine Gametime nicht schon verbraucht hat, wenn das Anmeldedatum + die Gametimetage kleiner als das heutige Datum ist.
 
Zuletzt bearbeitet:
Alternativ dazu diese Möglichkeit!
PHP:
<?php 
      $getCreated ="2005-11-15";//Stellt den Wert "$getCreated" aus der Datenbank dar!
  	$dbresult = $getCreated; 
  	$dbresult= strtotime($dbresult); //Timestamp zu "$getCreated".
  	$dbnow = mktime(); //Timestamp für Heute
  	$dbaktuell = $dbnow - $dbresult; //Timestamp Differenz
  	$dbaktuell = $dbaktuell/86400; //Timestamp Differenz geteilt durch Sekunden für einen Tag.
  	echo round($dbaktuell); // Ergebnis runden.
?>

Hoffe ich konnte Dir helfen.

Gruß

RS9999:)
 
Ich glaube in PHP kann man nicht mit einem Datum direkt "rechnen".

Das bei...
PHP:
$dbaktuell = $dbnow-$dbresult;        // gibt 1970-01-01aus, obwohl ich hier die Tager ermittelt haben wollte
echo $dbaktuell = date ("Y-m-d", $dbaktuell);

1970... rauskommt ist auch richtig, da "jetzt" - "vorgestern" (Achtung Beispiel!) 1137354133 - 1134354133 = 3000000 ist und date("Y-m-d", 3000000) kein gültigen Timestamp als Argument hat (daher 1970...)

Um aus einer Subtraktion von zwei Timestamps die Tage zu errechnen müsstest du
"jetzt" - "vorgestern" / 86400 rechnen
86400 = 60Sek*60*Min*24Std = 1 Tag
In PHP und deinem Beispiel wäre das dann:

PHP:
$irestTage = bcdiv( $dbresult - $dbnow , 86400, 0);
echo $irestTage;

Aber wenn du ehh in der DB schon mit DATE Typen arbeitest, würde ich das, wie Gumbo es schon sagt, direkt über das SQL Query bestimmen lassen.

Gruss
 
noch ne kleine Frage zur MySQL Abfrage:

wie soll ich das denn mit mySQL umsetzen?

ich ermittle anhand von einer Abfrage die Datensätze, welche die Spielzeiten beinhalten, anhand der anderen Abfrage die Zeit. Würde ich jetzt einen Inhalt in einer Variable Auslegen oder gar Beide in einem Array, wäre ich doch wieder bei der PHP Lösung, oder kann ich mit den Variablen dann die mySQL SELECT Abfrage durchführen?

Nur was ist mit den Spielzeit Tagen, welche anhand von INTs ermittelt werden muss und in Form von: 30, 50, 70 vorliegen. Dann würde ich die Tage summieren und eine Ergebnis von z.B: 150 haben. Dieses Ergebnis würde ich dann in einer SQL Abfrage mit NOW() verrechnen lassen, was ja auch wieder nicht funktioniert, oder etwa doch?
 
Zuletzt bearbeitet:
Zurück