从时代开始时刻

时间:2018-10-27 04:03:53

标签: typescript date momentjs

我想利用时间来管理时间。

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

我正在这样做:

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

是否有一种方法可以从时代而不是今天开始解析字符串?还是要实现我想要的功能,我必须解析字符串以自行编号,然后手动将其转换为毫秒?

1 个答案:

答案 0 :(得分:1)

moment是一个时间戳,您需要的是duration。来自Moment.js的docs

  

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

因此,使用Moment.js的duration对象之一:

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

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

在此处查看文档:{​​{3}}

脚注:

您提到的纪元就好像是0年1月1日,在计算机上谈论该纪元时,请注意,通常是Moment.js | Docs:1970-01-01。因此,从纪元处请求毫秒数会给您比预期更长的时间。