2012-03-06 7 views
6

javascriptで特定のタイムゾーンからunixタイムスタンプを取得する簡単な方法はありますか?たとえば、クライアントが私にUNIXのタイムスタンプを送ってもらいたいのですが、私はそれを自分のタイムゾーンに合わせたいと思っています。特定のタイムゾーンから現在のタイムスタンプを取得

ありがとうございました!

答えて

5

なぜ単にUTCで日付を送信し、サーバー上のタイムゾーンに変換するだけではないのですか?

var utcEpochSeconds = dateObj.getTime() + (dateObj.getTimezoneOffset() * 60000); 
+0

ローカルマシンがサーバのタイムゾーンオフセットを必ずしも知っているとは限りません。 'dateObj.getUTCTime()'メソッドが存在しない理由はまだ解りません。 – RobG

+0

UTCは常に同じです。あなたの時計が間違って設定されていないか、相対論的な速度で旅行している場合を除いて:http://en.wikipedia.org/wiki/Coordinated_Universal_Time – Tobias

+1

私は8時間オフですか? (LAのタイムゾーンにある) – tjdett

0

toISOStringを使用してUTCタイムスタンプを取得します。これが起こるようにするためには

var date = new Date(); 
date.toISOString(); // EST would be 6 hour diff from GMT 
+0

'toISOString()'はES5であり、使用されているWebブラウザのかなりの割合でまだサポートされていません。それが欠けている人のためにエミュレートするのは難しいことではありません。 – RobG

+0

それをサポートしていない古いIEではないですか? :Pどちらにしても、シムを作る。 – Trevor

1

、あなたは時間にタイムゾーンのオフセットを適用する必要があり、その後、(テストこれ、私はメモリから推測しています)の値から、あなたのオフセットを削除:

var now = new Date(), 
    offset = -(now.getTimezoneOffset() * 60 * 1000), // now in milliseconds 
    userUnixStamp = +now + offset; 

var now = new Date(), 
    offset = now.getTimezoneOffset() * 60 * 1000, 
    yourUnixStamp = userUnixStamp - offset; 
+0

ロサンゼルスの同じタイムスタンプを返すものが何であっても、そのクライアントをクライアントにすることができますか?今私はそれのまわりで私の心を包むことができないので...私は別の結果を得ています。 * brainmelt – Tobias

+0

状況をもう少し説明できますか?どこから来たのですか?あなたはどうですか? – Eli

+0

私はサーバーの時間と同じタイムゾーンのクライアントを維持する必要があります - 私はすでにサーバー時間をUTCに設定しています。これで簡単にUTC時刻を生成しようとしました: var d = new Date(); var utc = Math.round(d.getTime()+(d.getTimezoneOffset()* 60000)/ 1000); しかし、それは常に8時間先のマイクロタイム(なぜ?/ 1000がある)タイムスタンプを返します... – Tobias

関連する問題