web-dev-qa-db-ja.com

javascript "(new Date())。getTime()"が2つの異なるタイムゾーンから実行される場合

JavaScript (new Date()).getTime()は2つの異なるタイムゾーンから同時に実行されますが、同じ値が得られますか?

この値は、ブラウザーが実行されているマシンで設定されているシステム時刻の影響を受けますか?

39
user855

はい、それはシステム時間の影響を受けます。ただし、ローカル時刻が正しい場合(コンピューターが設定されているタイムゾーンにかかわらず)、どのタイムゾーンでも同じである必要があります。

ECMAScript標準は( §15.9.1.1 )と述べています:

「時間は、1970年1月1日UTC以降のミリ秒単位のECMAScriptで測定されます。」

48

コード:

var today = new Date();
console.log(today);
var t = today.getTime();
console.log(t);

英国のマイコンピュータ:

Sat Sep 21 2013 03:45:20 GMT+0100 (GMT Daylight Time)
1379731520112 

私のVPS:

Sat, 21 Sep 2013 02:44:31 GMT
1379731471743

GetTime値の差は48,369ミリ秒(48秒)ずれていますが、1時間のゾーンの差ではありません

23
PeanutPower

同じ値は取得されません-2つのクライアントのブラウザーがシステム時間を取得する違いはありますが、それらの時間が正しく設定されている場合、new Date()を使用してタイムスタンプを取得するため、最小の違いで2回取得する必要があります、UTC値(new Date()は1970年1月1日からの経過ミリ秒数を返しますが、変化しません)を取得できます。これは、世界時であり、場所に依存しません。

6
darioo

ほとんどの場合、マシン間で達成される時間の間に偏差がありますが、JavaScriptのDate()はデフォルトでUTCタイムゾーンを取ります(以前は間違っていました)。

通常時間が必要な場合は、サーバー時間を使用し、必要に応じて出力のタイムゾーン修正を適用するのが最善です。

2
BGerrissen

異なるタイムゾーンでサーバーと同じ日付が必要な場合は、次のようにすることができます。

var UTC=new Date(Date.UTC(serverYear,serverMonth-1,serverDate,0,0,0,0)); 
1
mplungjan