Ich habe mal ein wenig getestet.
PHP ermittelt mit strtotime() tatsächlich aus
Code:
05.10.1947 => -701920800
06.10.1947 => -701830800
was einer Differenz von 90000 entspricht (richtig wären 86400). Selbst mit angegebener Uhrzeit 00:00:00 bekommt man diese Werte.
Code:
05.10.1947 00:00:00 => -701920800
06.10.1947 00:00:00 => -701830800
Aber beim Zurückwandeln mit date() gibt es wieder das richtige Datum.
Code:
-701920800 => 05.10.1947 00:00:00
-701830800 => 06.10.1947 00:00:00
PHPs DateTime::createFromFormat($format, $date)->getTimestamp() ermittelt übrigens die gleichen Werte. Bis auf den Unterschied, dass man bei createFromFormat() die Uhrzeit 00:00:00 mit angeben muss, sonst nimmt es die aktuelle Uhrzeit.
Ob das an der Umstellung von der Sommerzeit liegt?
Calc aus OOo z.B. ermittelt aus diesen Timestamps folgende Datums (=ZELLE/86400+25569)
Code:
-701920800 => 05.10.1947 22:00:00
-701830800 => 06.10.1947 23:00:00
Hier mein Script, mit dem ich getestet habe:
PHP-Code:
<?php
$date = '.10.1947 00:00:00';
$formatIn = 'd.m.Y H:i:s'; // anpassen an $date
$formatOut = 'd.m.Y H:i:s';
foreach(array('05', '06', '07') as $day)
{
echo $day.$date.'<br><br>';
echo 'timestamp with strtotime()<br>';
dump(strtotime($day.$date));
echo 'readable with date()';
dump(date($formatOut, strtotime($day.$date)));
echo 'readable with \Date::parse()';
dump(\Date::parse($formatOut, strtotime($day.$date)));
echo 'timestamp with DateTime';
dump(DateTime::createFromFormat($formatIn, $day.$date)->getTimestamp());
echo 'readable with date()';
dump(date($formatOut, DateTime::createFromFormat($formatIn, $day.$date)->getTimestamp()));
echo '<hr>';
}
?>
edit: \Date::parse() hinzugefügt
Lesezeichen