如何使用Moment.js完全格式化持续时间? [英] How can I format time durations exactly using Moment.js?

查看:1021
本文介绍了如何使用Moment.js完全格式化持续时间?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

鉴于UTC格式的两个日期,我想执行以下操作:

I would like to do the following, given two dates in UTC formatting:

var start = "2014-01-13T06:00:00.0000000Z";
var end = "2014-01-13T14:16:04.0000000Z";

我希望获得两次之间的确切时间跨度,例如

I would like to get the exact time span that passes between these two times, such as

8h 16m

我尝试使用以下内容:

var duration = moment(moment(end) - moment(start)).format('hh[h] mm[m]');

但是这几天都行不通.而且,它不能用几天,因为即使< 24小时过去了,它们也总是> = 1.

But this does not work with days. Moreover, it does not work with days, since they are always >=1 even if <24 hours pass.

我也尝试过 twix.js 来获取长度,但是其格式不支持创建上面指定的格式,或者我无法在其文档中找到这样做的方法.基本上,我正在寻找twix.humanizeLength()精确版本.

I have also tried twix.js to get the length, but its formatting doesn't support creating the format specified above, or I could not find the way to do so in its documentation. Basically I am looking for an exact version of twix.humanizeLength().

Moment.js a.diff(b)仅提供总持续时间,它可以为我提供时间间隔的长度(以分钟,小时或天为单位),但不能使用余数来计算.

Moment.js's a.diff(b) provides only total durations, it can give me the length of the time span in minutes, hours or days, but not calculated using remainders.

我的当前解决方案是使用diff创建范围,然后使用取模来计算余数,但这不是很好:

My current solution is to use diff to create the ranges and then use modulo to calculate remainders, but this is not very elegant:

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插件?

The question: Is there any smarter way to do this in either moment.js or twix.js, or should I take my time and develop my own moment.js plugin?

推荐答案

moment.js中有一个用于格式化持续时间的插件:矩持续时间格式

There's a plugin for formatting duration in moment.js : moment-duration-format

如果它没有满足您的要求,则应扩展moment.duration.fn.如果您不支持许多语言环境,则应该很简单.

If it doesn't do what you need, then you should extend moment.duration.fn. If you don't support many locales, it should be easy enough.

无论如何,我建议阅读此功能请求的主题.

In any case, I'd recommend to read the thread of this feature request.

这篇关于如何使用Moment.js完全格式化持续时间?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆