如何使用moment.js获取毫秒级日期

3

我想用moment.js获取毫秒级的日期。但问题在于,他们的文档中只有将Unix时间戳转换为momentjs格式的内容。那么我该如何从日期中获取以毫秒为单位的Unix时间戳呢?例如:moment.unix(2010-01-01T05:06:07) => 1262318767000

4个回答

6

你也可以使用 format() 方法获取时间的毫秒表示。

moment("2010-01-01T05:06:07").format('x');


它返回的是当前日期时间的毫秒数,而不是2010-01-01T05:06:07。 - Ahmed Numaan
奇怪的是它对你不起作用。我尝试了 moment('2019-01-19 12:35 PM').format('x') IST,它给了我1547881500000,这是UTC时间。IST = GMT + 05:30。 - veritas

2
你说过:“在他们的文档中,Unix时间戳部分只提供了Unix时间戳到moment.js格式的转换”,但这是不正确的。
根据https://momentjs.com/docs/#/displaying/unix-timestamp-milliseconds/

moment#valueOf 只是输出自 Unix 纪元以来的毫秒数

因此,请使用 valueOf 方法:
moment("2010-01-01T05:06:07").valueOf();

但在我的机器上,它返回的是1262329567000。这是因为moment.js使用了我的浏览器时区 - 这个毫秒值对应于2010年1月1日,在我的浏览器时区中是上午05:06:07。
你在问题中提到的值(1262318767000)对应于使用偏移量+01:00的时区:在某个比UTC提前一小时的地方,在2010年1月1日的上午05:06:07:https://en.wikipedia.org/wiki/List_of_UTC_time_offsets#UTC+01:00,_A 如果你想明确日期/时间对应的时区,可以使用moment timezone: https://momentjs.com/timezone/

1

valueOf函数 https://momentjs.com/docs/#/parsing/utc/

console.log(moment('12/09/2021').valueOf());

在上面的例子中,你无法确定是十二月九日还是九月十二日。最好提供格式,说明你发送的数值使用哪种格式。
请查看下面的例子:
moment(dateValue, dateFormat).valueOf();

在这里,我们提供将日期格式发送给moment并再次转换为moment理解的格式,然后从1970年1月1日开始减去毫秒数。如果您的日期早于该日期,则值为负。

例如:

console.log(moment('09/12/2021', 'DD/MM/YYYY').valueOf());

0

您可以使用

moment( date ).toDate().getTime();

如果您喜欢使用时区

let timezone = moment.tz.guess() || 'America/Los_Angeles';
moment( date, timezone ).toDate().getTime();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接