setHour在时区没有变化

时间:2016-12-30 13:39:43

标签: node.js timezone momentjs

我正在编写node.js上的代码,我需要将小时,分钟,秒设置为现在的日期而不更改时区。 (我从客户那里得到时间,用UTC时区以hh:mm:ss格式发送时间)

我在设定时间的代码是:

  var now = new Date();

  console.log(now);
  now.setHours(format.h);
  now.setMinutes(format.m);
  now.setSeconds(format.s);

现在的时间是:

2016-12-30T13:30:17.586Z

格式为:

13:29:29

当我设置秒数时,结果是

2016-12-30T18:29:29.345Z

似乎时区正在发生变化;如何在没有时区变化的情况下设置小时?

  • 更新

我安装了momentjs,这是我的代码:

  var now = moment();
  console.log("before: " + now.format());
  now.add(format.h, 'hours');
  now.add(format.m, 'minutes');
  now.add(format.s, 'seconds');
  console.log("after: " + now.format());

这是日志:

format time= 3:45:38
before: 2017-01-06T12:55:45+03:30
after: 2017-01-06T16:41:23+03:30

实际上时间应为2017-01-06T15:45:38+00:00

1 个答案:

答案 0 :(得分:0)

对于任何复杂的日期/时间操作,最好使用moment

moment().set('hour', 13);

它会为你节省很多麻烦。

请参阅:http://momentjs.com/docs/