【发布时间】:2014-02-10 10:31:57
【问题描述】:
给定两个 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]');
但这不适用于天数。此外,它不适用于天,因为即使经过 =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 插件吗?
【问题讨论】:
标签: javascript momentjs