问题
I am trying to convert milliseconds to a date using the javascript using:
new Date(Milliseconds);
constructor, but when I give it a milliseconds value of say 1372439683000 it returns invalid date. If I go to a site that converts milliseconds to date it returns the correct date.
Any ideas why?
回答1:
You're not using a number, you're using a string that looks like a number. According to MDN, when you pass a string into Date, it expects
a format recognized by the parse method (IETF-compliant RFC 2822 timestamps).
An example of such a string is "December 17, 1995 03:24:00
", but you're passing in a string that looks like "1372439683000
", which is not able to be parsed.
Convert Milliseconds
to a number using parseInt
, or a unary +
:
new Date(+Milliseconds);
new Date(parseInt(Milliseconds,10));
回答2:
The Date
function is case-sensitive:
new Date(Milliseconds);
回答3:
instead of this
new date(Milliseconds);
use this
new Date(Milliseconds);
your statement will give you date is not defined error
回答4:
I was getting this error due to a different reason.
I read a key from redis whose value is a json.
client.get(someid, function(error, somevalue){});
Now i was trying to access the fields inside somevalue
(which is a string), like somevalue.start_time
, without parsing to JSON object.
This was returning "undefined" which if passed to Date constructor, new Date(somevalue.start_time)
returns "Invalid date".
So first using JSON.parse(somevalue)
to get JSON object before accessing fields inside the json solved the problem.
来源:https://stackoverflow.com/questions/17371302/new-datemilliseconds-returns-invalid-date