new Date(..).getTime()不等于momentJS中的moment(..).valueOf()?

tha*_*lay 17 javascript momentjs

new Date(..).getTime()应该以毫秒为单位返回时间戳.根据momentJS文档,表达式moment(..).valueOf()应该相同(返回给定日期的时间戳,以毫秒为单位).

我查看了以下示例数据:

var timeStampDate = new Date("2015-03-25").getTime(); //timestamp in milliseconds?
> 1427241600000
var timeStampMoment = moment("03-25-2015", "MMDDYYYY").valueOf(); //timestamp in milliseconds?
> 1427238000000
Run Code Online (Sandbox Code Playgroud)

如您所见,结果不一样.

现在我在momentJS中搜索一个函数,它返回给我与表达式完全相同的数据new Date(..).getTime().

R. *_*olt 34

日期构造函数doc:

UTC时区用于解释ISO 8601格式中不包含时区信息的参数

时刻构造函数doc:

除非您指定时区偏移量,否则解析字符串将在当前时区中创建日期

所以在当前构造函数中指定时区会产生与Date相同的行为:

var timeStampMoment = moment("03-25-2015 +0000", "MM-DD-YYYY Z").valueOf(); //> 1427241600000
Run Code Online (Sandbox Code Playgroud)


iab*_*abw 5

当您将相同的值传递给“日期和时刻”时(至少在Chrome中启用了几年),您会从这两个值中获得相同的值。

new Date("2015-03-25").getTime()
1427241600000
moment("03-25-2015", "MMDDYYYY").valueOf()
1427259600000
new Date("03-25-2015").getTime()
1427259600000
Run Code Online (Sandbox Code Playgroud)

您实际击中的只是对Date.parse中的日期格式的一种猜测