51

我正在尝试使用 javascript 将毫秒转换为日期:

new Date(Milliseconds); 

构造函数,但是当我给它一个毫秒值说 1372439683000 它返回无效日期。如果我去一个将毫秒转换为日期的站点,它会返回正确的日期。

任何想法为什么?

4

5 回答 5

104

您没有使用数字,而是使用看起来像数字的字符串。根据 MDN,当您将字符串传递给 时Date,它期望

解析方法识别的格式(符合 IETF 的 RFC 2822 时间戳)。

此类字符串的一个示例是“ December 17, 1995 03:24:00”,但您传入的字符串看起来像“ 1372439683000”,无法解析。

使用或一元转换Milliseconds为数字:parseInt+

new Date(+Milliseconds); 
new Date(parseInt(Milliseconds,10)); 
于 2013-06-28T18:30:54.083 回答
5

Date函数区分大小写:

new Date(Milliseconds); 
于 2013-06-28T18:29:05.780 回答
1

而不是这个

new date(Milliseconds); 

用这个

new Date(Milliseconds); 

你的声明会给你日期未定义错误

于 2013-06-28T18:29:34.657 回答
0

重要的是要注意时间戳参数必须是数字,不能是字符串。

new Date(1631793000000).toLocaleString('en-GB', { timeZone: 'America/Argentina/Buenos_Aires' });

// Returns: '16/09/2021, 08:50:00'

new Date("1631793000000").toLocaleString('en-GB', { timeZone: 'America/Argentina/Buenos_Aires' });

// Returns: 'Invalid Date'

如果您将时间戳作为字符串接收,您可以简单地将其包裹在parseInt()周围:parseInt(your_ts_string)

于 2021-09-16T11:46:47.983 回答
0

由于不同的原因,我收到了这个错误。

我从redis中读取了一个值为json的键。

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

现在我试图访问里面的字段somevalue(这是一个字符串),比如somevalue.start_time,而不解析为 JSON 对象。这将返回“未定义”,如果传递给 Date 构造函数,则new Date(somevalue.start_time)返回“无效日期”。

因此JSON.parse(somevalue),在访问 json 中的字段之前首先使用获取 JSON 对象解决了这个问题。

于 2015-09-21T08:23:54.207 回答