Datum umwandeln und berechnen
Gerd
- php
0 Thomas Luethi0 Andy0 Gerd0 Thomas Luethi0 Thomas Luethi0 Gerd
Hi,
ich habe ein Formular, in dem Mitarbeiter ihre Urlaubszeiten eintragen können. Sie müssen jeweils den ersten Tag ihres Urlaubs eintragen und es soll jetzt das Datum für 14 Tage später errechnet werden.
Das Datum liegt in der Form 01.01.2004 vor.
Wie kann ich mittels PHP das Zukunftsdatum berechnen lassen?
Vilen Dank im Voraus.
Hallo,
Das Datum liegt in der Form 01.01.2004 vor.
Nicht gerade aussagekraeftiges Beispiel...
dd.mm.yyyy ("deutsch"/"europaeisch")
oder
mm.dd.yyyy ("amerikanisch")?
Wie auch immer, zum Berechnen ist es normalerweise am besten,
wenn man Daten ins Unix-Timestamp-Format umwandelt.
Wie kann ich mittels PHP das Zukunftsdatum berechnen lassen?
Lies mal im PHP-Manual: Datums- und Zeit-Funktionen:
http://www.php.net/manual/de/ref.datetime.php
Insbesondere strtotime() ist interessant und koennte Dir weiterhelfen:
$timestamp2=strtotime("+2 weeks",$timestamp1);
Gruesse,
Thomas
Hi,
zerlege das Datum in Tag, Monat und Jahr.
Zähle bei Tag 14 dazu.
Wenn es bei den Monaten 1,3,5,7,8,10,12 mehr als 31, bei 4,6,9,11 mehr als 30 oder bei 2 mehr als 28 sind, zähle bei Monat eins dazu!
Das Programm ist soweit halt noch nicht auf Daten über den Jahreswechsel eingestellt. Außerdem gibts bei Schaltjahren Probleme!
Andy
Hallo,
Das Programm ist soweit halt noch nicht auf Daten über den Jahreswechsel eingestellt. Außerdem gibts bei Schaltjahren Probleme!
Eben - ueber all diese Probleme (Monatswechsel, Jahreswechsel, Schaltjahre...)
muss man sich keine Gedanken machen, wenn man einfach strtotime() verwendet...
Gruesse,
Thomas
Hi und danke erstmal,
ich habe folgendes Programm geschrieben:
<?php
$time = strtotime("+2 week", $zeit);
echo strftime("%d.%m.%Y", $time);
?>
Wobei $zeit = 31.01.2003 ist.
Als Ausgabe erhalt ich folgendes Datum: 15.01.1970
Was habe ich falsch gemacht?
Danke
Gerd
Hallo,
$time = strtotime("+2 week", $zeit);
Wobei $zeit = 31.01.2003 ist.
Der zweite Parameter von strtotime() muss ein Timestamp sein, kein String.
Und wenn schon Strings (im ersten Parameter),
dann bitte in der richtigen Reihenfolge (mm.dd.yyyy).
RTFM:
http://www.php.net/manual/de/function.strtotime.php
Gruesse,
Thomas
Hallo,
Und wenn schon Strings (im ersten Parameter [von strtotime()]),
dann bitte in der richtigen Reihenfolge (mm.dd.yyyy).
Sorry, dort muss das Datum gemaess
http://www.gnu.org/software/tar/manual/html_chapter/tar_7.html#SEC100
z.B. in folgendem Format sein:
1970-09-17 # ISO 8601.
70-9-17 # This century assumed by default.
70-09-17 # Leading zeros are ignored.
9/17/72 # Common U.S. writing.
Gruesse,
Thomas
z.B. in folgendem Format sein:
1970-09-17 # ISO 8601.
70-9-17 # This century assumed by default.
70-09-17 # Leading zeros are ignored.
9/17/72 # Common U.S. writing.
Ich hab jetzt diesen Code:
$datum = date('m/d/Y');
$datum2 = strtotime("+2 week", $datum);
echo strftime("%d.%m.%Y", $datum2);
Und die Ausgabe: 15.01.1970
Was mache ich falsch?
MFG
Gerd
Hallo,
$datum = date('m/d/Y');
Du hast offenbar ein Problem, zwischen
abstrakt und konkret zu unterscheiden.
Abstrakt:
Der String soll im Format m/d/y sein.
Das heisst: Monat, dann Slash, dann Tag, dann Slash, dann Jahr.
Konkret:
Um einen konkreten String zusammenzubauen,
musst Du es z.B. so schreiben:
$d=31;
$m=1;
$y=2004;
$datumstring="$m/$d/$y";
oder (fuer das eindeutigere Format "y-m-d") so:
$datumstring="$y-$m-$d";
Und die Ausgabe: 15.01.1970
Was mache ich falsch?
Immer, wenn das Jahr 1970 vorkommt, ist das ein Hinweis
darauf, dass eine Umwandlung ins Unix-Timestamp Format
nicht funktioniert hat und dass deshalb ein Datum
als Timestamp "0", d.h. 01.01.1970, 00.00.00 Uhr
berechnet wurde...
Bitte lies das Manual-Kapitel zu den Datums- und Zeit-Funktionen
mal vollstaendig durch. Ebenso die dclp-FAQ zum Thema:
http://www.dclp-faq.de/ch/ch-datetime.html
Gruesse,
Thomas