Datum und Resttage ermitteln

XXdynastieXX

Mitglied
Hallo,

ich habe ein Script geschrieben mit dem man mit Hilfe von Dropdownmenü's folgende 3 Werte in eine Datenbanktabelle speichern kann. Jedes seperat in einer Spalte.

TAG, MONAT, JAHR

Soweit funktioniert alles. Die Werte werden gespeichert. Jedoch fehlt mir das Wissen, wie ich nun mit diesen Werten arbeiten kann.

Ich will z.B. sagen das der TAG 27 vom MONAT 05 im JAHR 2008 ein Dienstag ist.

Oder sagen wir mal mit date() ermittele ich das aktuelle Datum. Wie errechne ich z.B. die Differenz in Tagen, wieviel Tage noch bis zum gespeicherten Datum verfügbar sind.

Über Tipps und Hilfe würde ich mich sehr freuen.

Liebe Grüße
 
Hallo!

Mit time() holst Du Dir die aktuelle Zeit in Sekunden.
Davon ziehst Du die Zeit in Sekunden, die Du mit mktime() aus den gespeicherten Daten, ermitteln kannst, ab.
Die Differenz teilst Du durch 60*60*24 (86400 = 24 Stunden) Sekunden und hast die Tage.
Allerdings wird das Ergebnis Nachkommastellen haben, also musst Du es noch mit floor() abrunden.

Gruss Dr Dau
 
Hallo!

Mit time() holst Du Dir die aktuelle Zeit in Sekunden.
Davon ziehst Du die Zeit in Sekunden, die Du mit mktime() aus den gespeicherten Daten, ermitteln kannst, ab.
Die Differenz teilst Du durch 60*60*24 (86400 = 24 Stunden) Sekunden und hast die Tage.
Allerdings wird das Ergebnis Nachkommastellen haben, also musst Du es noch mit floor() abrunden.

Gruss Dr Dau

Muss das unbedingt mit time() sein? Hab es mit date() versucht aber leider klappt das nur wenn der monat gleich ist. Es sei denn ich hab nen irrsinnigen Denkfehler

Code:
$id = $_GET['pid'];
$sql="SELECT * FROM pc_events WHERE id='$id'";
$result=mysql_query($sql);
$row=mysql_fetch_assoc($result);

$aktjahr = date("Y");
$aktmonat = date("m");
$akttag = date("d");

$pc_jahr = $row["jahr"];
$pc_monat = $row["monat"];
$pc_tag = $row["tag"];

$resttage = ($pc_jahr.$pc_monat.$pc_tag) - ($aktjahr.$aktmonat.$akttag);

Wie gesagt, wenn das Jahr und der Monat gleich sind, dann klappt es. Aber ansonsten kommen zu grosse Zahlen heraus. Ich überleg das nochmal durch. :suspekt:

------ NACHTRAG

So scheint es anscheinend zu funktionieren!

Code:
$id = $_GET['pid'];
$sql="SELECT * FROM pc_events WHERE id='$id'";
$result=mysql_query($sql);
$row=mysql_fetch_assoc($result);

$aktjahr = date("Y");
$aktmonat = date("m");
$akttag = date("d");

$pc_jahr = $row["jahr"];
$pc_monat = $row["monat"];
$pc_tag = $row["tag"];

$pc_minus = mktime($stunde, $minute, $sekunde, $pc_monat, $pc_tag, $pc_jahr);
$akt_minus = mktime($stunde, $minute, $sekunde, $aktmonat, $akttag, $aktjahr);

$resttage = ($pc_minus - $akt_minus) / 86400;
 
Zuletzt bearbeitet:
Klar würde es auch mit date() irgendwie funktionieren, aber dann musst Du viel mehr überprüfen.
In welchem Monat ist der Tag?
In welchem Jahr ist der Monat (Jahreswechsel)?
Ist ein Schaltjahr?
Wie viele Tage hat der Monat?

Also ich hätte dazu keine Lust. ;)

Code:
$akt_minus = mktime($stunde, $minute, $sekunde, $aktmonat, $akttag, $aktjahr);
macht im grunde nichts anderes als wie
Code:
$akt_minus = time();

Code:
$resttage = ($pc_minus - $akt_minus) / 86400;
müsste so richtig sein
Code:
$resttage = ($akt_minus - $pc_minus) / 86400;
 
Zuletzt bearbeitet:
Zurück