ホームページ  >  記事  >  バックエンド開発  >  PHPのタイムスタンプの問題

PHPのタイムスタンプの問題

WBOY
WBOYオリジナル
2016-06-23 14:02:131153ブラウズ

一部のシステム (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');

この例の変換では、2012-12-31 16:00 になります。 : 00、通常の効果より 8 時間短縮します


ディスカッションへの返信 (解決策)

date_default_timezone_set("PRC")

この文を追加してみてください

date_default_timezone_set("PRC");試してみてください

これは役に立たない、このタイムスタンプはリアルタイムで更新されていない、すべて過去の時間であるため、役に立たない、試してみてください

8時間というのは、中国が+8ゾーンにあるためです。

php.ini でタイムゾーンを変更するのが最善です


タイムスタンプは、タイムゾーンに関係なく、1970 年 1 月 1 日からの秒数です。

マニュアル: http://www.php.net/manual/en/datetime.construct.php


// 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("ヨーロッパ/ロンドン");

$dt = new DateTime('@1356969600');

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 をどのように変更しても、出力結果には影響しません

If DateTime::format を変更したい タイムゾーンを設定するには、タイムゾーンオブジェクト DateTimeZone を

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 の返信:
date_default_timezone_set("Europe/London")
$dt = new DateTime('@1356969600'); echo $dt->getTimezone()->getName(), "n";
echo $dt->format('Y-m-d H:i:s'), ……

$dt = new DateTime('@1356969600'); で @1356969600 タイムラインを生成するときに使用された時間設定はどれですか? 変換時に統一しないと、あなたのような問題が発生します。 たとえば、生成するときに、 :date_default_timezone_set( "PRC"); コンバージョン ページでは date_default_timezone_set("PRC"); も使用する必要があります。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。