【发布时间】:2021-07-01 23:07:04
【问题描述】:
如何在 JavaScript 中创建持续时间,然后将其格式化为 ISO 8601 持续时间,例如 2 分 30 秒将是“PT2M30S”。
这可以通过 $interval 来完成吗?或者这可以通过 Date().getTime() 来实现吗?
我有一个交互,我需要跟踪花费的时间,所以我会在开始或交互时获取日期,然后在结束时再次获取日期,相互减去然后格式化为 ISO 8601?努力寻找正确的语法或有用的库。
【问题讨论】:
-
如果你有日期对象,那么你可以简单地使用
Date.prototype.toISOString() -
@Satpal — OP 想要一个持续时间,而不是日期和时间。
-
如果您的时间很短(比如不到一个月),那么您可以简单地从另一个日期中减去一个日期以获得以毫秒为单位的差异,然后转换为一个间隔。唯一的问题是夏令时边界。几个月和几年的持续时间需要更多的工作,因为它们的长度不一致。
标签: javascript angularjs iso8601