【发布时间】:2015-11-06 07:18:16
【问题描述】:
我正在使用momentjs 和moment-duration-format 以Y M D HH:mm:ss 格式显示持续时间,具体取决于持续时间(如果它包括年、月、日、小时、分钟和秒),并在此字段上使用 ngTable 排序和过滤器。
代码
$scope.getTableDataDuration = function(item) {
if (angular.isDefined(item) && item != null) {
var tmp = "";
if (item > 31536000) { //year
tmp = moment.duration(item, "year").format("Y M D h:mm:s");
return tmp;
} else if (item > 2628000) { //month
tmp = moment.duration(item, "month").format("M D h:mm:s");
return tmp;
} else if (item >= 86400) { //day
tmp = moment.duration(item, "days").format("D h:mm:s");
return tmp;
} else if (item < 60) {
return item;
} else if (item < 3600) { //minute
tmp = moment.duration(item, "minutes").format("h:mm:s");
return tmp;
}
}
return;
}
更新
例如:
duration in seconds 331 should show 05:51
duration in seconds 7245 should show 02:01:25
similarly till years
给定一个持续时间,我需要将其人性化,类似于上面的示例
【问题讨论】:
-
你的问题到底是什么?
-
@DavidVotrubec:需要人性化的持续时间,以秒为单位
-
好吧,我还是不明白,什么实际上不起作用。如果持续时间小于 60 秒,则它只输出秒数。这不正确吗?
-
@DavidVotrubec:是的,这是正确的,但对于更长的持续时间,它并没有给出正确的人性化价值。在针对
99544持续时间给出的 plunker 示例中,它转换为99544 0:00:0而应该显示1 15:21:29 -
我已经发布了答案。我猜您对
moment.duration(item, "XXXX")的所有调用实际上都应该是moment.duration(item, "seconds"),因为提供的值是秒数(而不是年数、天数等)。我说的对吗?
标签: javascript jquery angularjs momentjs ngtable