我在moment.js中使用以下内容将秒转换为Days Hours Minutes Seconds格式
moment().startOf('year').seconds(1209600).format('DD HH:mm:ss')
但我没有获得14 00:00:00
,而是获得15 00:00:00
我在这里缺少什么?
答案 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)
,这会在最终结果中增加一天。