2012-01-30 8 views
9

文字列から日付オブジェクトを作成しようとしています。 私は "2012-01-30T16:23:12" のようなミリ秒の部分を除いてISO形式で日付を取得、私は(Link to FiddleFirefoxの新しい日付()からの文字列の構築時間は現地時間の時間

currentDate = "2012-01-30T16:23:12"; 
var date = new Date(currentDate); 
alert(date); 

IE、ChromeとFirefoxの に次のコードを実行すると

結果が異なりますIEとChromeは文字列をUTCと見なしますが、Firefoxは現地時間帯で考慮します。

どこでもユーザーエージェントを確認する以外には、一般的な回避方法がありますか?

+0

[迷惑なjavascriptのタイムゾーン調整の問題](http://stackoverflow.com/questions/7629286/annoying-javascript-timezone-adjustment-issue) –

答えて

12

があるがUTCのため+00:00オフセット:

currentDate = "2012-01-30T16:23:12+00:00"; 

はその助けをしていますか? (実際に私のタイムゾーンを変更せずにテストすることはできません)申し訳ありません。

+0

ありがとう。これは "+00:00"で動作します.3つのブラウザすべてで同じエポック値が得られます。 http://jsfiddle.net/harsha/9ybtN/2/ – harsha

+0

申し訳ありません、はい、コロンが必要です –

2

ええと、可能な回避策は、文字列を解析してメソッドを使用することです。

setUTCDate()  
setUTCFullYear() 
setUTCHours() 

おそらく、あなたがゼロのタイムゾーンを追加しようとすることができ、よりよい解決策

+2

+1、これは回避策ではありません*正しい方法*、参照:http://stackoverflow.com/questions/7629286 –

0

現在の形式で入力が正しく解析されるという保証はありません。 Date.parse()ルーチンは、特定の形式の文字列を解析するためにのみ必要です。他の形式の解析は実装依存です。例えば、現在の形式でデータを解析することができ、ライブラリを使用し、また

new Date(currentDate + '.000Z') 

:あなたが要件を満たす実装に依存していることを敢えてした場合、特定のフォーマットに準拠するようにデータを追加jQueryまたはGlobalize.js。

同様の考慮事項が日付の作成に適用されます。 Date.toString()を明示的またはalert(date)のように使用すると、出力形式の保証はありません。単一のコンピュータ内であっても、異なるブラウザは異なるローカライズされたフォーマットを使用します。

関連する問題