2017-10-30 14 views
0

この問題があります。イタリアでの昼間の一時間は、今があるので 私はこのDaylight JavaScriptの書式設定日付

var d = new Date(datestring); 

のように私のコードを記述する場合、私はこのフォーマット

var datestring = "2017-10-30T15:03:10.933044Z"; 

でこの日付を持っている私は

Mon Oct 30 2017 16:03:10 GMT+0100 (ora solare Europa occidentale) 

をobtaine。それにもかかわらず、私は同じ日時計を持っていたいと思います(15歳ではなく16歳です)。 私を助けることができますか?

ありがとうございました

+0

あなたはmoment.js' 'のような外部ライブラリでこれを解決しようとしたことがありますか? –

+0

しかし、私は@Connumが提案した解決策は十分だと思いますが、あなたは信じていませんか? – Lorenzo

+0

私がコメントしていたときに彼の答えはなかった 彼のスニペットは '' 2017-10-30T13:03:10.933Z "' –

答えて

1

ISO 8601形式のUTCタイムスタンプをローカルとして扱いたい場合は、Zを削除するだけです。ただし、ローカルタイムゾーンがGMT + 0000でない場合は、別の瞬間を表します。

また、組み込みパーサを使用することは推奨されていません(Why does Date.parse give incorrect results?参照)。ブラウザによってはUTC(Safari 11など)として扱われるものもあれば、無効なものもあります。文字列を解析する独自の関数を作成するか、ライブラリを使用する必要があります。多くの良い構文解析ライブラリと書式設定ライブラリが利用できます。

var s = '2017-10-30T15:03:10.933044Z'; 
 
var d = new Date(s.replace(/z/i,'')); 
 
console.log(d.toString());

1

入力文字列はISO-8601形式です。この形式では、末尾のZは、タイムスタンプがUTCベースであることを意味します。

.toUTCString()メソッドを使用して、より人間に優しいUTCベースの文字列表現を取得できます。あなたが特定の形式の文字列を使用する場合は

var datestring = "2017-10-30T15:03:10.933044Z"; 
var d = new Date(datestring); 
var s = d.toUTCString(); 
console.log(s) // "Mon, 30 Oct 2017 15:03:10 GMT" 

は、その後、Moment.jsのようなライブラリを使用することを検討してください。