2016-07-16 52 views
1

Ich habe den gleichen Code für 5+ Jahre, PHP 5.x und habe plötzlich Probleme mit strtotime und UK Datumsformate. Ich schrieb dieses kleine Skript-Test:PHP 5.x strtotime nicht UK-Format d-m-y ordnungsgemäß

<?php 
echo "<br /><b>PostDate: 1-7-15</b>"; 
$format="d-m-y"; 
$date="1-7-15"; 
$c = strtotime($date); 
echo "<br /><b>Unix TS: - ".$c."</b>"; 
$a = date($format,$c) ; 
echo "<br /><b>Unix TS to date - ".$a."</b>"; 
echo "<br /> <br />"; 
echo "<br /><b>PostDate: 7/1/15</b>"; 
$format="m/d/y"; 
$date="7/1/15"; 
$c = strtotime($date); 
echo "<br /><b>Unix TS: - ".$c."</b>"; 
$a = date($format,$c) ; 
echo "<br /><b>Unix TS to date - ".$a."</b>"; 
?> 

Diese Ausgänge:

PostDate: 1-7-15 
Unix TS: - 995173200 
Unix TS to date - 15-07-01 


PostDate: 7/1/15 
Unix TS: - 1435726800 
Unix TS to date - 07/01/15 

Sie können deutlich sehen, dass die UK-Version nicht korrekt ist, ist die US-Version korrekt ist. Die UK-Version konvertiert den Unix-Zeitstempel nicht korrekt.

Wie ich schon sagte, ich habe strtotime seit Jahren verwendet, plötzlich diese Ergebnisse? Verliere ich meine Gedanken?

+0

hast du andere php-Versionen getestet –

+0

Ich habe 5.4, 5.5, 5.6 und 7.0 versucht. 7.0 blies meinen Code sofort, also rannte ich in Deckung. – Gerfnad

+0

Danke für die Bearbeitung. Habe es für das nächste Mal. – Gerfnad

Antwort

0

änderte ich die Zeile:

$c = strtotime($date); 

An:

$c=strtotime(date($format, strtotime($date))); 

und es funktioniert für alle Datumsformate, auch d M y. So seltsam ...