当持续时间小于一小时时,使用moment.js以格式00:XX显示持续时间

时间:2017-01-03 12:09:16

标签: javascript momentjs

我尝试使用片段持续时间格式来设置倒数计时器的格式 但是一旦时间低于60分钟,时间就会消失 例如60分钟显示为" 01:00" 哪个是对的 59分钟显示为" 59" 这是不正确的,它应显示为" 00:59"

其中3500000毫秒等于58分钟

我有以下代码:

moment.duration(3500000).format("hh:mm", { forceLength: true })

显示结果:58,而不是00:58

我在这里做错了什么?

我也试过变化无济于事

moment.duration(3500000).format("HH:mm", { forceLength: true })

4 个答案:

答案 0 :(得分:6)

我可以解释发生了什么(我创建了moment-duration-format插件)。

forceLength选项仅影响具有值的第一个标记,这意味着第一个标记的值大于0。在您的情况下,hh令牌没有值。 https://github.com/jsmreese/moment-duration-format#force-length

hh切换到HH意味着用于格式化时刻对象(日期),但不能用于使用我的插件格式化时刻持续时间对象(时间长度)(除非您已自定义持续时间格式令牌,这可以使用我的插件)。

根据建议使用moment(moment.duration(3500000)._data).format("HH:mm");是一个很好的创意解决方法。

如果你想获取存储库的dev分支上的moment-duration-format版本,有一个选项可以提供帮助(参见https://github.com/jsmreese/moment-duration-format/issues/22)......

在该版本中,您可以使用*字符表示修剪时显示的最小标记,即使它没有值:

moment.duration(3510000).format("*hh:mm");
--> "00:59"
moment.duration(3509999).format("*hh:mm");
--> "00:58"

请注意,dev分支版本中的默认行为已从truncate更改为round,因此当您通过时,您将从00:59下降到00:5858 minutes 30 seconds58 minutes 29 seconds。在该版本中,您可以为此输出启用trunc选项:

moment.duration(3539999).format("*hh:mm", { trunc: true });
--> "00:58"
moment.duration(3540000).format("*hh:mm", { trunc: true });
--> "00:59"

不确定这是否是您想要的倒计时解决方案...可能是设置floortrunc),ceilinground的功能剩下的会是最好的吗?

如果您想要天花板行为,可以使用dev分支版本和trunc并将60000添加到您的计时器值:

moment.duration(3540000 + 60000).format("*hh:mm", { trunc: true });
--> "01:00"
moment.duration(3539999 + 60000).format("*hh:mm", { trunc: true });
--> "00:59"
moment.duration(3500000 + 60000).format("*hh:mm", { trunc: true });
--> "00:59"
moment.duration(3480000 + 60000).format("*hh:mm", { trunc: true });
--> "00:59"
moment.duration(3479999 + 60000).format("*hh:mm", { trunc: true });
--> "00:58"

答案 1 :(得分:5)

试试这个

moment(moment.duration(3500000)._data).format("HH:mm");

答案 2 :(得分:0)

我的变种

with open('homework.txt','r') as a_file:
    for line in a_file.readlines():
        split_line=line.split(",")
        name=split_line[0]
        score=split_line[1]
        YOUR CODE HERE

给出:“00:56”

希望将是有用的。

答案 3 :(得分:0)

尝试使用“修剪”参数。

moment.duration(3500000).format("hh:mm", { trim: false })