0

1355657846 および 1355677646 unix タイムスタンプをYMD H:i:s formatに変換しようとしています。問題は H:i:s にあります。それぞれ11:37:24 と 17:07:26 のはず ですが、12:37:24 と18:07:26 と表示されています。

<?php

echo date('Y-m-d H:i:s','1355657846');//2012-12-16 12:37:26,must be 11:37:26

echo date('Y-m-d H:i:s','1355677646');//2012-12-16 18:07:26,must be 17:07:26

?>

UNIXタイムスタンプ変換で確認したので11:37と17:07のはず

また、gmailアカウントにメールが届いた時です。そして、これらのUNIXタイムスタンプをgmailから取得しました(php imap関数を使用... $overview->udate)

これをローカルの xampp サーバーでテストしています。ここでどこが間違っているのか、誰かが私に提案できますか?

PS: stackoverflowで関連する質問を確認しましたが、ここではタイムスタンプを日時に変換したいと思います。これは、タイムゾーンに関係なく一定である必要があると思います。

4

3 に答える 3

0

これはおそらく TimeZone の設定によるものです。PHP について学びdate_default_timezone_set()、ローカル タイム ゾーンが実際に必要なタイム ゾーンと一致することを確認します。すべての Unix タイムスタンプは、世界中で同じです。ただし、ローカルの DATETIME 値は世界中で異なります。この記事はあなたに表示される可能性があります (表示されることを願っています):

http://www.experts-exchange.com/Web_Development/Web_Languages-Standards/PHP/A_201-Handling-date-and-time-in-PHP-and-MySQL.html

宜しくお願いします、〜レイ

于 2012-12-16T14:41:25.487 に答える
0

これは、ローカル Web サーバーのタイムゾーン設定です。

php.ini で date.timezone の値を確認してください。また、htaccess ファイルまたは PHP スクリプトによってオーバーライドされる場合もあります。

于 2012-12-16T14:41:54.367 に答える
0

DateTime が作成されると、strtotime が含まれました。解析は、サーバーのデフォルトのタイムゾーンに依存します。

適切なタイムゾーンで日付を取得したい場合は、次の 2 つの方法があります。

default_timezone_set('Europe/Paris');//for example 

また :

$date = DateTime::createFromFormat('U',$timestamp,new DateTimezone('Europe/Paris'));
echo $date->format('Y-m-d H:i:s);

詳細については、こちらをご覧ください。

于 2012-12-16T14:42:57.083 に答える