Ich habe ein Problem mit PHP DateDiff, ich verstehe nicht, warum jede Zeitzone unterschiedliche Ergebnisse zurückgibt, zum Beispiel in diesem Fall Prag 0 Monat und US 1 Monat zurück.DateDiff gibt unterschiedliche Ergebnisse für jeden Zeitbereich zurück
Was ist dieser Unterschied und wie ich 1 Monat zurückkomme (statt 30 Tage, wenn ich 1 Monat hinzufüge) wie erwartet?
Code Europe/Prag:
date_default_timezone_set("Europe/Prague");
$from = new \DateTimeImmutable('2016-09-01');
$to = $from->add(new \DateInterval('P1M'));
var_dump($from);
var_dump($to);
var_dump($from->diff($to)->m);
var_dump($from->diff($to)->d);
Ergebnis Europe/Prag:
object(DateTimeImmutable)#1 (3) {
["date"]=>
string(26) "2016-09-01 00:00:00.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(13) "Europe/Prague"
}
object(DateTimeImmutable)#3 (3) {
["date"]=>
string(26) "2016-10-01 00:00:00.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(13) "Europe/Prague"
}
int(0)
int(30)
-
Code US/Pazifik:
date_default_timezone_set("US/Pacific");
$from = new \DateTimeImmutable('2016-09-01');
$to = $from->add(new \DateInterval('P1M'));
var_dump($from);
var_dump($to);
var_dump($from->diff($to)->m);
var_dump($from->diff($to)->d);
führen US/Pazifik :
object(DateTimeImmutable)#2 (3) {
["date"]=>
string(26) "2016-09-01 00:00:00.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(10) "US/Pacific"
}
object(DateTimeImmutable)#4 (3) {
["date"]=>
string(26) "2016-10-01 00:00:00.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(10) "US/Pacific"
}
int(1)
int(0)
Hätten Sie etwas dagegen 'var_dump'ing Stunden, Minuten, Sekunden und Millisekunden als auch? – Mchl
Könnte das ein Fehler in PHP selbst sein? –
@MichaelHirschler vielleicht, ich bin mir nicht sicher, deshalb habe ich meine Frage an SO gestellt – patie