web-dev-qa-db-ja.com

Moment.jsとUnixエポック変換

次の文字列として日付を返すWebサービスがあります。

/Date(1377907200000)/

私はMomentJSを使用して、これをmomentオブジェクトに解析します。

moment("/Date(1377907200000)/") => _Fri Aug 30 2013 20:00:00 GMT-0400_

それはすべて問題ありません。しかし、オブジェクトでunix()を呼び出すと、値_1377907200_が与えられます。ただし、これは_Fri Jan 16 1970 17:45:07 GMT-0500_に対応します。 unix()によって返された値を乗算することもできますが、それは私にはずさんなようです。私がunix()を呼び出すことによって行っていることは、私が思っていることとまったく同じではないのではないかと思います。 unix()を呼び出すときに、ある種の形式を指定する必要がありますか?ここで何が欠けていますか?

JSFidleは瞬間への変換を示し、次に戻る。

16
Robert Kaucher

厳密にはJavaScript/Unix時間の観点から、meagarが提供する答えは正しいです。ただし、1000を掛けるだけでは、データに存在していた可能性のある1秒未満の精度が失われます。

Moment.jsは、 ドキュメント内 で説明されているように、2つの異なるメソッドを提供します。 .unix()は、値を秒単位で返します。これは事実上1000で除算し、小数を切り捨てます。変更せずにミリ秒を返すだけの.valueOf()メソッドを使用するとします。

50

JavaScriptランドでは、Dateを整数に変換すると、多数の ミリuNIXエポックからの秒数。従来のUnix時間は、エポック以降のの数です。 1000を掛けることが正しいオプションです。

10
meagar