我想要做以下事情,给定两个以UTC格式表示的日期:
var start = "2014-01-13T06:00:00.0000000Z";
var end = "2014-01-13T14:16:04.0000000Z";
我希望获得这两个时间之间精确的时间跨度,例如:
8h 16m
我已经尝试使用了以下内容:
var duration = moment(moment(end) - moment(start)).format('hh[h] mm[m]');
但这对于天数不起作用。此外,它也不适用于天数,因为即使经过小于24小时,它们始终>=1。
我还尝试使用twix.js获取长度,但它的格式不支持创建上述指定的格式,或者我在其文档中找不到方法。基本上,我正在寻找一个确切的版本twix.humanizeLength()
。
Moment.js的a.diff(b)
仅提供总持续时间,它可以给出以分钟、小时或天为单位的时间跨度的长度,但不能使用余数计算。
我的当前解决方案是使用diff
创建范围,然后使用模运算计算余数,但这并不是很优雅:
var days = moment(end).diff(start, 'days');
var hours = moment(end).diff(start, 'hours') % 24;
var minutes = moment(end).diff(start, 'minutes') % 60;
var duration = ((days > 0) ? days + 'd ' : '') + ((hours > 0) ? hours + 'h ' : '') + ((minutes > 0) ? minutes + 'm ' : '');
问题:在moment.js或twix.js中有没有更聪明的方法来做到这一点?还是我应该花时间开发自己的moment.js插件?