首页 > 解决方案 > 从时代创造时刻

问题描述

我想用时刻来管理时间。

为此,我想将字符串解析为时刻,然后将其转换为毫秒。

我这样做是这样的:

const str = "1:12.123"; // 1m, 12s, 123ms = 72123ms
const parsed = moment(str, "m:ss.SSS");

问题是这种方法从“今天”开始,而不是从时代开始。

console.log(parsed); // moment("2018-10-27T00:01:12.123")
console.log(parsed.unix()); // 1540609272, not 72123

有没有办法从时代解析字符串而不是从今天开始?还是要完成我想要的,我必须自己解析字符串以编号并手动将其转换为毫秒?

标签: typescriptdatemomentjs

解决方案


Amoment是一个时间戳,你需要的是一个duration. 来自 Moment.js 的文档

...时刻定义为单个时间点,持续时间定义为时间长度。持续时间没有定义的开始和结束日期。

所以使用 Moment.js 的duration对象之一:

const d = moment.duration('0:1:12.123');
console.log(d.asMilliseconds());

请注意字符串中的前导0:,即小时数,这是必需的,因此moment.duration可以理解您传递字符串的格式。

在此处查看文档:Moment.js | 文档

脚注:

您提到的时代好像是 0 年的 1 月 1 日,当我们谈论时代时,请注意计算机中通常是Unix 时代:1970-01-01。因此,要求从纪元开始的毫秒数会给您带来比预期更多的年数。


推荐阅读