2016-05-25 5 views
0
によって変換した後、間違った日付を取得しています

私のコードは私はmoment.js

console.log(moment(new Date('2016-05-24T18:50:05.000')).format('LL')); 

それは24は2016あるべきですが、それは私に5月25日2016を与えます。

誰でも私を助けることができます。

+0

をこのタイムゾーンの問題だろうか? UTCタイムゾーンを指定することを検討してください。 –

+0

他の人がうまく働いているかどうかチェックして、この日だけ何も起こっていません。 plukr [link](https://plnkr.co/edit/e8cIXxajUmE7ggVXueTG?p=preview)の例をチェックすることができます。 – user3152849

+0

タイムゾーンを指定しないと、時間はローカルとみなされますので、太平洋時間マウンテン・タイムまたはセントラル・タイムでは、UTCで5月25日を意味します(UTCは少なくともあなたより6時間前です)。文字列 '' 2016-05-24T18:50:05.000Z 'を試して、UTCタイムゾーンを指定してください。 –

答えて

2

日付をUTCとして指定する必要があります。

あなたは、次のいずれかの方法で行うことができます:Zは時間がUTCであることを指定し、

console.log(moment(new Date('2016-05-24T18:50:05.000Z')).format('LL')); 

。または:

console.log(moment.utc(new Date('2016-05-24T18:50:05.000')).format('LL')); 


あなたは直接瞬間にISO 8601日付文字列を渡すことができます。

JavaScriptのDateオブジェクトに文字列をラップする必要はありません。次に、あなたのコードは次のようになります。

console.log(moment('2016-05-24T18:50:05.000Z').format('LL')); 

または:

console.log(moment.utc('2016-05-24T18:50:05.000').format('LL')); 
+0

console.log(moment.utc(new Date())。format( 'LL'));それは今日の昨日の日付をなぜ示していますか? – user3152849

+1

new Date()は現地時間で日付を作成し、moment.utc()は日付をUTCとして解釈します。 format( 'LL')は、現地時間で日付を表示します。引数として渡すdatetimeをutcとして解釈する場合は、moment()の代わりにmoment.utc()を使用してください。 – user2961850

+1

なぜ 'new date'を呼び出すのですか? –