2016-11-22 8 views
0

ミリ秒単位で入力しています。例えば:$timestamp = 1479844722190;PHP:日付関数を使用して日付に変換した後にタイムスタンプを変更したのはなぜですか?

私は$date = date('Y-m-d h:i:s', $timestamp/1000);

を使用してタイムスタンプが、私は戻ってstrtotime($date);

私の結果はgmdate()を使用した場合、同じことが起こる1479801522

あるを使用してタイムスタンプに変換することを変換します。

実際のコード:

日():

$timestamp = get_timestamp(); // 1479847575022 
    $date = date('Y-m-d h:i:s', $timestamp/1000); // 2016-11-22 08:46:15 
    strtotime($date); // 1479804375 

はgmdate():これはなぜ起こるか

$timestamp = get_timestamp(); // 1479847661576 
    $date = gmdate('Y-m-d h:i:s', $timestamp/1000); // 2016-11-22 08:47:41 
    strtotime($date); // 1479804461 

誰かが私を言うことができる、および実行する方法があるかどうかこれは、このようなタイムマシンを作成することなく?

UPDATE:

date_default_timezone_set('UTC')事前には、次のような結果を与える置く:

timestamp: 1479848532028 
date: 2016-11-22 09:02:12 
reverted: 1479805332 

timestamp: 1479848622222 
date: 2016-11-22 09:03:42 
reverted: 1479805422 
+4

timezonesssssss –

+0

問題は、問題を確認するために消えるかどうかを確認するために、 'あなたのコードの前に' date_default_timezone_set( 'UTC')を試してみてくださいすることはタイムゾーンです。 Unixタイムスタンプは常にUTCでなければなりません。 – Devon

答えて

0

をその上に寝た後、私は答えを見つけました。

gmdate('Y-m-d h:i:s', $timestamp/1000);

が本当にする必要があります:

gmdate('Y-m-d H:i:s', $timestamp/1000);

関連する問題