web-dev-qa-db-ja.com

new Date(milliseconds)は無効な日付を返します

私はJavaScriptを使用してミリ秒を日付に変換しようとしています:

new Date(Milliseconds); 

コンストラクタですが、たとえば1372439683000というミリ秒の値を指定すると、無効な日付が返されます。 ミリ秒を日付に変換するサイト にアクセスすると、正しい日付が返されます。

なぜアイデアがありますか?

42
user1634451

数値を使用していない、数値のように見えるstringを使用しているMDNによると、文字列を Date に渡すと、

解析メソッド(IETF準拠RFC 2822タイムスタンプ)によって認識される形式。

このような文字列の例は「December 17, 1995 03:24:00」ですが、「1372439683000」のような文字列を渡しているため、解析できません。

Millisecondsまたは単項の+を使用して、parseIntを数値に変換します。

new Date(+Milliseconds); 
new Date(parseInt(Milliseconds,10)); 
84
apsillers

Date関数では大文字と小文字が区別されます。

new Date(Milliseconds); 
5
ic3b3rg

これの代わりに

new date(Milliseconds); 

これを使って

new Date(Milliseconds); 

あなたのステートメントはあなたに与えるでしょう日付は定義されていませんエラー

1
Sachin

別の理由でこのエラーが発生していました。

値がjsonであるredisからキーを読み取りました。

client.get(someid, function(error, somevalue){});

今、私はJSONオブジェクトに解析せずに_somevalue.start_time_のようなsomevalue(文字列)内のフィールドにアクセスしようとしていました。これは「未定義」を返していましたが、日付コンストラクタに渡されると、new Date(somevalue.start_time)は「無効な日付」を返します。

そのため、json内のフィールドにアクセスする前に最初にJSON.parse(somevalue)を使用してJSONオブジェクトを取得することで問題を解決しました。

0
Vinay Vemula