在Javascript/Angular中创建一个ISO 8601持续时间
Create an ISO 8601 Duration in Javascript/Angular
如何在JavaScript中创建持续时间,然后将其格式化为ISO 8601持续时间,例如2分钟30秒将为"PT2M30S"。
这可以用$interval完成吗?或者这可以通过Date().getTime()实现吗?
我有一个互动,我需要跟踪花费的时间,所以我会在开始时得到日期,还是在互动结束时再得到日期,互相减去,然后格式化为ISO 8601?努力寻找正确的语法或有用的库。
包装了一个小程序包来帮助实现这一点: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
进行安装
对于Angular(2+)
您可以使用我的ngx持续时间选择器,它允许用户选择持续时间并自动将其转换为ISO 8601格式。
这里有现场演示。
Moment是一个非常流行的JavaScript日期操作库,能够在ISO8601中格式化持续时间。以下是如何首先计算两个日期之间的差异,然后根据该差异生成持续时间字符串的示例
var first = moment("2015-10-01"),
second = moment("2015-10-02");
console.log(moment.duration(second.diff(first), "ms").toISOString());
// "PT24H"
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.26.0/moment.min.js"></script>
查看文档中的持续时间格式以了解更多详细信息。
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- jQuery:循环一个具有不同超时值的循环
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 从javascript创建一个列表
- 节点导出返回一个空对象
- 使用clickToggle并在单击另一个元素时关闭元素
- 我可以在json对象中添加一个函数吗
- 使用javascript将动态表从一个html页面打印到另一个html页
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 表追加而不附加最后一个元素
- 我如何找到一个句子中的所有空格并替换忽略它们
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 使用类从一个标记中双击事件
- Javascript,访问一个主要对象模块模式中的每个对象
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 在ISO转换后,JavaScript时间滞后了一个小时
- 在Javascript/Angular中创建一个ISO 8601持续时间
- 按母语人士的数量寻找一个好的ISO语言标签列表