2017-06-06 8 views
0

私は理由を知りませんが、インターネット上で利用可能なすべてのソリューションを試しましたが、それでも成功できませんでした。イベントMomentJsは助けできませんでした。 私は日付文字列 "2017-06-05T15:00:00Z"を持っています。残りのAPIから来ています。 私は瞬間jsでも試してみましたが、助けてください。 注意ライブラリに日付オブジェクトではなくローカルオブジェクトの文字列が必要であるため、日付オブジェクトを返す必要があります。 だから、これまで私が試した:UTCの日付をローカルの日付オブジェクトに変換するには?

var d = new Date('2017-06-05T15:00:00Z') 
console.log(d.getHours()) 

上記のコードは17ではなく15を印刷します!それで私は間違って何をしているのですか?図書館では、カレンダーと同じように1700時間が得られますが、1500時間ではなく1700時間が表示されます。

+2

Z.を削除します.. –

+0

@Jonasw申し訳ありませんが、あなたが私に文字列を処理しない限り、残りのAPIから来ていますが、それは唯一の方法ですか? – Maverick

答えて

1

あなたはZズールー(UTC +0:00)を意味getTimezoneOffsetMethod

var d = new Date('2017-06-05T15:00:00Z') 
d.setHours(d.getHours() + (d.getTimezoneOffset()/60)) 
console.log(d.getHours()) // 15 
0
'2017-06-05T15:00:00Z' 

を使用することができるはずです。したがって、このタイムストリングは、ローカルではなく、むしろグローバル時間であることを指定します。 Dateオブジェクトはローカルなので、次のようになります。

new Date('2017-06-05T15:00:00Z'); 

ズールーでは15クロックだったローカル日付を返します。あなたは現在、UTC + 2:00タイムゾーンにいます。

ですから、timestringがローカルになるために取得する必要があるすべては「Z」を削除することです:

new Date('2017-06-05T15:00:00Z'.replace("Z","")); 

か他の回答を参照して、タイムゾーンのオフセットを削除する...

関連する問題