moment.js错误计算的时间

时间:2016-12-04 04:45:09

标签: javascript date momentjs

我在moment.js中使用以下内容将秒转换为Days Hours Minutes Seconds格式

moment().startOf('year').seconds(1209600).format('DD HH:mm:ss')

但我没有获得14 00:00:00,而是获得15 00:00:00

我在这里缺少什么?

3 个答案:

答案 0 :(得分:3)

1209600秒是14天,因此,因为一年的第一天是01 00:00:00天,如果您添加14天,则会获得15 00:00:00

你没有确切地说出你想要做什么,但你得到的是“今年1209600秒的日期/时间是什么的正确答案。”

答案 1 :(得分:1)

您正在尝试使用持续时间的概念,但您正在使用日历来执行此操作。出于几个原因,这不是一个好主意。正如其他人所指出的那样,日历从1日开始,这会让你失望。但是,你可能会有局部时区不连续性影响你的结果,例如你的持续时间是否足够长,以便在春季前进的夏令时转换中捕获。

如果您想使用Moment来处理持续时间,可以使用a separate API for that

var d = moment.duration(1209600, 'seconds');

var h = d.hours();
var m = d.minutes();
var s = d.seconds();

目前还没有内置format方法用于持续时间,因此您必须自己将这些方法组合成一个字符串,并在必要时应用零填充。但是,有moment-duration-format第三方插件,可以让你这样做:

moment.duration(1209600, 'seconds').format('DD HH:mm:ss')

答案 2 :(得分:0)

moment().startOf('year');    // set to January 1st, 12:00 am this year

因此,startOf('year')方法设定时刻起点为当前年1月1日12.00 AM ,这是一天的开始。而且你还要增加14天。但由于最初的日期是从上午12点开始,它仍然是一整天(ends at 11.50 PM),这会在最终结果中增加一天。