2012-02-09 12 views
0

私はxmlドキュメントからunix時間をミリ秒単位で取得していますが、PHP 5.2.17では読み込み可能な日付(d-m-Y)に変換できません。私は、次の試してみた2012年2月9日午後1時37分49秒UNIX時間(ミリ秒) - d-m-Y

にから正しく に変換http://www.epochconverter.com/使用しました

$timestamp = $xml['LastBackupDate']; 
echo '<br />Method 1: '.date("d-m-Y", $timestamp); 
echo '<br />Method 2: '.date("d-m-Y", strtotime($timestamp)); 
echo '<br />Method 3: '.date("d-m-Y", strtotime($timestamp*1000)); 
echo '<br />Method 4: '.date("d-m-Y", strtotime($timestamp/1000)); 
echo '<br />Method 5: '.date("d-m-Y", $timestamp/1000); 
echo '<br />Method 6: '.date("d-m-Y", (int)$timestamp); 
echo '<br />Method 7: '.date("d-m-Y", intval($timestamp)); 
echo '<br />Method 8: '.date("d-m-Y", intval($timestamp)/1000); 
echo '<br />Method 9: '.date("d-m-Y", intval($timestamp/1000)); 

をどの戻ってくる:

Method 1: 
Method 2: 01-01-1970 
Method 3: 01-01-1970 
Method 4: 01-01-1970 
Method 5: 25-01-1970 
Method 6: 19-01-2038 
Method 7: 19-01-2038 
Method 8: 25-01-1970 
Method 9: 25-01-1970 

どのようにthありますか? ありがとう!使用してから


編集、最良の結果は:

echo date("d-m-Y", substr($xml['LastBackupDate'],0,-3)); 

答えて

0

あなたは1000でを分割するのではなく、乗算を試みたことがありますか?エポック時間は秒単位で通常...


OK、今私は実際にPHPを学ぶ必要がある...

dateは形式と時間がかかります。 strtotimeは、人間が判読可能な日付/時刻文字列を取り、時刻を返します。あなたの値は、人間が読める文字列ではなく、エポック時間(ミリ秒)です。strtotimeの有効な引数ではありません。

試行方法4strtotimeがなくても、それは必要ではありません。

$timestampが文字列(私はそれが既に整数だったと仮定と思います)ですので、動作しませんでした

右、。

文字列の最後の3文字を削除すると、ほとんどの方法が得られます。これは、整数に変換してから1,000で割ることと同じです。あなたのメソッド6 & 7 intに変換するが、分割しない - 両方が必要! thisによると

dateは秒整数タイムスタンプが必要です。あなたが持っている値は文字列なので、整数に変換する必要があります。ミリ秒単位であるため、適切な単位を得るには1,000で割る必要があります。

エポック時間は、1970年1月1日以降の秒数でカウントされることに注意してください。したがって、01-01-1970が表示されるたびに、2番目の引数は0と評価されます。

date("d-m-Y", $timestamp);     <-- string, not int: treated as zero 
date("d-m-Y", strtotime($timestamp));  <-- not a formatted time, gives zero 
date("d-m-Y", strtotime($timestamp*1000)); <-- ditto 
date("d-m-Y", strtotime($timestamp/1000)); <-- ditto 
date("d-m-Y", $timestamp/1000);   <-- clearly nonzero, but no idea what! 
date("d-m-Y", (int)$timestamp);   <-- correct type but in milliseconds 
date("d-m-Y", intval($timestamp));   <-- correct type but in milliseconds 

ミリ秒ではなく数秒を含む整数を渡す場合は、正しいはずです。そのよう

date("d-m-Y", intval($timestamp)/1000); 
+0

はちょうどそれを行われ、最初の質問を更新しました...が、それは助けにはなりませんでした。 – Michael

+0

編集されました。あなたの_Method 1_は 'strtotime'を呼び出さなかったし、それは正しいと思う(ユニットだけがオフだった)。 – Useless

+0

私はその変更を加え、メソッド5を追加しました - 機能していないようですが、出力は異なります...他のアイデアですか? – Michael

関連する問題