如何在JavaScript中创建持续时间,然后将其格式化为ISO 8601持续时间,例如2分30秒将是" PT2M30S"。
可以用$ interval来完成吗?或者可以使用Date()。getTime()?
来实现我需要跟踪花费时间的互动,所以我会在开始或交互时获得日期,然后在最后再次,相互减去然后格式化为ISO 8601?苦苦寻找正确的语法或有用的lib。
答案 0 :(得分:1)
Moment是一个非常流行的JavaScript日期操作库,它能够在ISO8601中格式化持续时间。这是一个如何首先计算两个日期之间的差异,然后从该差异生成持续时间字符串的示例。
var first = moment("2015-10-01"),
second = moment("2015-10-02");
moment.duration(second.diff(first), "ms").toISOString();
// "PT24H"
有关详细信息,请查看documentation for duration formatting。
答案 1 :(得分:0)
包装了一个小包装来帮助解决这个问题:https://www.npmjs.com/package/tinyduration
用法示例:
import { parse, serialize } from 'tinyduration';
// Basic parsing
const durationObj = parse('P1Y2M3DT4H5M6S');
assert(durationObj, {
years: 1,
months: 2,
days: 3,
hours: 4,
minutes: 5,
seconds: 6
});
// Serialization
assert(serialize(durationObj), 'P1Y2M3DT4H5M6S');
您可以使用npm install --save tinyduration
或yarn add tinyduration
答案 2 :(得分:0)