2016-11-25 16 views
0

コードに問題がありますか?結果が異なるのはなぜですか?

var mom = moment("23-11-2016 00:00", "DD-MM-YYYY HH:mm"); 
alert(mom.toISOString()); 
//result 2016-11-22T17:00:00.000Z 

なぜ結果は2016-11-23T00:00:00.000Zではありませんか?どうすれば2016-11-23T00:00:00.000Zの結果が得られますか?

ありがとうございます。

+1

を使用

は[ '.toISOString()'](http://momentjs.com/docs/ながら、解析し、現地時間で表示されます#/ display/as-iso-string /)は、常にタイムスタンプをUTCで返します。あなたはおそらくUTCから-7時間ずれているでしょう。現地時間で日付を表示する場合は、['format()'](http://momentjs.com/docs/#/displaying/format/)を使用してください。入力文字列がUTC時刻を表す場合は、['moment.utc(String、String);'](http://momentjs.com/docs/#/parsing/utc/) – VincenzoC

答えて

2

デフォルトでは、瞬間を解析し、現地時間で表示されます。 .toISOString()しばらく

は常にUTCにタイムスタンプを返します。

注意を.toISOString()が常に問題となっている瞬間は、ローカルモードになっている場合でも、UTCのタイムスタンプを返すこと。これは、ネイティブJavaScript Date .toISOString()の仕様と、the ES2015 specificationで概説されているように一貫性を持たせるために行われます。

おそらく、UTCから-7時間ずれています。

現地時間で日付を表示する場合は、format()を使用してください。あなたの入力文字列は、UTC時刻を表す場合は、そのためデフォルトの瞬間でmoment.utc(String, String);

1

@VincenzoCのコメントに基づいています。

.toISOString()現地時間をutcに変換すると、私の国はutcから-7時間ずれます。

実際に、iso形式を取得した後、データベースに保存するとしましょう。

その他の場合は、ローカル時刻としてiso形式を表示する必要があります。その後、ちょうどこの

moment('iso format time').format("DD-MM-YYYY HH:mm")

を行うので、あなたの質問の答えは、説明の上に読み込むことができませんされています。それは正常ですので、問題はあなたのコードではなく、あなたの脳LOGICにあります。 doc saysとして

関連する問題