PHP と Javascript で特定の日の 2 つの等しいタイムスタンプを作成したいのですが、違いがあります....
2012 年 7 月 1 日:
PHP
$test = mktime(0,0,0,7,1,2012); gives 1341093600
JavaScript
var d = Date.UTC(2012,6,1);
var timestamp = d/1000; gives 1341100800
なんで2時間差?
PHP と Javascript で特定の日の 2 つの等しいタイムスタンプを作成したいのですが、違いがあります....
2012 年 7 月 1 日:
PHP
$test = mktime(0,0,0,7,1,2012); gives 1341093600
JavaScript
var d = Date.UTC(2012,6,1);
var timestamp = d/1000; gives 1341100800
なんで2時間差?
への呼び出しDate.UTC
は、2012 年 7 月 1 日 UTC の午前 0 時のタイムスタンプを作成します。
一方、mktimeは、PHP が使用するように構成されているタイムゾーンを除いて、同じことを行います。
つまり、サーバーは UTC に設定されていません。
最も簡単な解決策はおそらくstrtotimeです:
$timestamp = strtotime('2012-07-01 UTC');
gmmktimeもあります。または、PHP のタイムゾーンを UTC に設定することもできます。で行いますが、コードで行うには、 date_default_timezone_set を使用でき.ini
ます。
date_default_timezone_set('UTC');
個人的な好みのメモとして、mktime は避けます。との間strtotime
でDateTime
、mktime がクリーンで読みやすいコードになるケースはほとんどありません。mktime の野獣的なパラメーター リストは、それが入っている行を単純に恐ろしく見せます。