2012-10-03 3 views
5

私はタイムゾーンとJavascript Dateオブジェクトで奇妙な何か気づいた。 Linuxボックス上でこれをしようとJavascriptの `Date`オブジェクトで2012年10月21日を表現する方法はありますか?

$ TZ='America/Sao_Paulo' js 
js> new Date(2012, 9, 21, 0, 0, 0).toString() 
"Sat Oct 20 2012 23:00:00 GMT-0300 (BRST)" 

私はそれは不可能すべてがその日0時と午前1時00分の間Dateを取得しようとします2012年10月の21日を表すオブジェクトを取得することが判明前日の午後11時から00時の日付になります。

バック同じ日付を得ることで、このような日付オブジェクトの結果に一時間(または1日)を追加する

(Windowsユーザーは、同じ動作を体験しブラジリア/ GMT-03に自分のタイムゾーンを変更することがあります)。

私はブラジルの特定の日付に発生する夏時間に関係していると思いますが、どう対処するか分かりません。

が、私は10月の第20回に達したとき(カレンダーアプリケーションのための)月の日数を反復処理し、それは明らかにそのような場合には永遠にループするループを持っている2012年

は私がやっている何かがあるに違いありません間違っていますが、私はそれが他のタイムゾーンでも起こるかもしれないと思うので、そのようなケースに対処する方法を知らない。

DateをJavascriptで処理して、そのようなタイムゾーン/サマータイム関連の問題が発生しないようにするには、どのような方法が推奨されますか?

答えて

0

これは絶対に正しい動作です。 DST深夜のため、10月21日にブラジルの現地時間には存在しません。カレンダーを作成するだけであれば、new Date(2012, 9, 21, 0, 0, 0).toString()UTC methodsの代わりにnew Date(2012, 9, 21, 0, 0, 0).toUTCString()を使うことができます。

たとえば、UTC日付を作成する場合は、new Date(Date.UTC(2012, 9, 21, 0, 0, 0));を使用できます。

+0

あなたの答えをありがとう。しかし、私の問題は、日付の文字列表現を取得していないが、この正確な瞬間を表すvaliddオブジェクトを取得しています。 – ereOn

+1

次に、UTCメソッドを使用します。 'new Date(Date.UTC(2012、9、21、0、0、0));' – bjornd

+0

これは実際にはうまくいきます。本当の解決策がもっと明白になるように答えを編集してください。私はそれを受け入れることをうれしくなるでしょう:) – ereOn

関連する問題