typescript - 从时代创造时刻
问题描述
我想用时刻来管理时间。
为此,我想将字符串解析为时刻,然后将其转换为毫秒。
我这样做是这样的:
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
有没有办法从时代解析字符串而不是从今天开始?还是要完成我想要的,我必须自己解析字符串以编号并手动将其转换为毫秒?
解决方案
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。因此,要求从纪元开始的毫秒数会给您带来比预期更多的年数。
推荐阅读
- c# - 如何投射列表
到一个列表 - c# - 使用 Lambda 函数处理 AWS IoT 消息
- javascript - 在 ag-grid 中,是否可以根据 reactJS 中的状态或道具动态停止行点击(包括不以蓝色突出显示行)?
- java - 使用多线程的消费者-生产者问题
- sql - BigQuery:进行交叉连接并添加另一个要分区的字段时的额外行
- dataframe - 在 Dataframe Pyspark 中添加对数列
- javascript - 在 JavaScript 中用新替换旧
- javascript - Ext Js 中的另存为对话框
- python - 所有测试的python补丁
- vba - 在工作表 VBA 中编辑插入行功能