Merkwürdiges Verhalten von strtotime () bei Verwendung relativer Daten ('diese Woche')
Ich habe irgendwie seltsames Verhalten des angetroffenstrtotime()
Funktion beim Umgang mit relativen Datumsformaten.
Ich lebe in einem Land, in dem der erste Tag der Woche nicht Sonntag, sondern Montag ist. Diese Tatsache sollte reflektiert werdenstrtotime()
Ausgabe.
Das Problem ist, dass egal welches Gebietsschema ich eingestellt habe (ich habe es versucht)en_US
Gebietsschema auch),strtotime()
nur komisch und weder Montag noch Sonntag scheinen im Bereich dieser Woche zu sein. Siehe folgendes Beispiel.
Heute, den 02.02.2014 (oder, wenn Sie so wollen, den 02.02.2014) ist Sonntag. Basierend darauf habe ich versucht, die Daten für Montag und Sonntag dieser Woche zu ermitteln. Beide waren weg.
<?php
setlocale(LC_ALL, 'cs_CZ');
$sunday = new DateTime('2014-02-02');
echo '"Today" is Sunday, ' . $sunday->format('Y-m-d') . "\n";
$thisWeekMonday = strtotime('monday this week', $sunday->getTimestamp());
$thisWeekSunday = strtotime('sunday this week', $sunday->getTimestamp());
echo "This week's Monday: " . date('Y-m-d', $thisWeekMonday) . "\n";
echo "This week's Sunday: " . date('Y-m-d', $thisWeekSunday) . "\n";
?>
Code über den Ausgaben:
"Today" is Sunday, 2014-02-02
This week's Monday: 2014-02-03
This week's Sunday: 2014-02-09
Wennstrtotime()
dachte, dass eine Woche mit Sonntag beginnt, es sollte 2014-02-02 als "diese Woche Sonntag" zurückgegeben haben, aber es tat es nicht. Das heißt lautstrtotime()
beginnt eine Woche mit Montag. In diesem Fall sollte "dieser Montag in der Woche" am 27.01.2014 zurückkehren, ist es aber nicht.
Dieses Verhalten ist unlogisch. Ist das ein PHP-Fehler? Mache ich etwas falsch? Wenn dies ein Fehler ist, wie kann dieses Problem am besten umgangen werden?