2016-07-16 6 views
1

私は5年以上同じコードをPHP 5.xで使用していて、突然strtotimeと英国の日付書式に問題があります。私は、テストにこの小さなスクリプトを書いた:PHP 5.x strtotimeが英国の書式d-m-yを正しく解析していない

<?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>"; 
?> 

この出力:

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 

あなたははっきり英国のバージョンが正しくないことがわかります、米国のバージョンがされて正しいです。英国版はUnixタイムスタンプに正しく変換されていません。

私が前に言ったように、私はこの方法でstrtotimeを何年も使っていましたが、突然これらの結果が出ましたか?私は私の心を失っていますか?

+0

他のPHPバージョンをテストしました –

+0

私は5.4,5.5、5.6、7.0を試しました。 7.0はすぐに私のコードを爆破したので、私はカバーのために走った。 – Gerfnad

+0

編集していただきありがとうございます。次回はそれを手に入れました。 – Gerfnad

答えて

0

私はライン変更:へ

$c = strtotime($date); 

を:

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

、それはすべての日付形式、でもD M yをのために働きます。奇妙なので...

関連する問題