ホームページ >バックエンド開発 >PHPチュートリアル >PHPのタイムスタンプの問題
一部のシステム (Windows など) では、php 関数の日付関数は 1970 年 1 月 1 日から 2038 年 1 月 19 日までに制限されています。
現在、タイムスタンプが 2038 年を超えており、日付を正しい標準時刻形式に変換できません。
もう 1 つの問題は、タイムスタンプが 1356969600 で、変換されたときの通常の結果は 2013-1-1 00:00:00 であることです。
例
$dt = new DateTime('@1356969600');echo $dt->format('Y-m-d H:i:s');
この文を追加してみてください
これは役に立たない、このタイムスタンプはリアルタイムで更新されていない、すべて過去の時間であるため、役に立たない、試してみてください
8時間というのは、中国が+8ゾーンにあるためです。
タイムスタンプは、タイムゾーンに関係なく、1970 年 1 月 1 日からの秒数です。
// UNIX タイムスタンプを使用します。結果は UTC タイムゾーンであることに注意してください。
$date = new DateTime( '@946684800');
echo $date->format('Y-m-d H:i:sP')
87cfa6faff16e49e03c8471cfa6c514esetTimezone('Asia/Shanghai'));
echo $dt->getTimezone()->getName(),"n"; format('Y-m-d H:i:s'), "n";
echo date('Y-m-d H:i:s',1356969600),"n";
date_default_timezone_set("ヨーロッパ/ロンドン");
echo $dt->getTimezone()->getName(),"n";
echo $dt->format('Y-m-d H :i:s'), "n";
echo date('Y-m...
echo $dt->format('Y-m-d H:i:s'), "n"; // 2012-12- 31 16:00:00
date('Y-m-d H:i:s',1356969600),"n"; // 2013-01-01 00:00:00
設定ファイルでタイムゾーンを設定しました。設定は PRC です
DateTime::format は外部設定の影響を受けないように設計されています (オブジェクト指向はこうあるべきです)
したがって、環境パラメータ date_default_timezone をどのように変更しても、出力結果には影響しません
DateTime::setTimezone
例:
$d = new DateTime('@1356969600');$d->setTimezone(new DateTimeZone('PRC'));echo $d->format('Y-m-d H:i:s');2013-01-01 00:00:00
引用 5 Lou helloyou0 の返信:
$dt = new DateTime('@1356969600'); で @1356969600 タイムラインを生成するときに使用された時間設定はどれですか? 変換時に統一しないと、あなたのような問題が発生します。 たとえば、生成するときに、 :date_default_timezone_set( "PRC"); コンバージョン ページでは date_default_timezone_set("PRC"); も使用する必要があります。