正确创建时刻 - 时区对象

时间:2015-12-23 11:27:23

标签: javascript momentjs

我正在尝试使用自定义小时和分钟创建一个时刻 - 时区对象,但是我一直收到无效的日期错误。

var momentz   = require('moment-timezone');

var now   = momentz().tz('Europe/Istanbul');
var year = parseInt(now.format('YYYY'));
var month = parseInt(now.format('M'));
var day = parseInt(now.format('D'));
var hour = 8;
var minute = 30;
var newdate = momentz([year,month,day,hour,minute,0]);

验证返回false

console.log(newdate.isValid());

我在这里缺少什么?谢谢。

1 个答案:

答案 0 :(得分:0)

没有单独的"时刻 - 时区对象"。瞬间时区增加了时刻对象。因此,您只需调用变量moment,而不是momenttz。这是from the docs

var moment = require('moment-timezone');

然后做你所问的:

var m = moment.tz('Europe/Istanbul'); // get the time in Turkey
m.startOf('day').hour(8).minute(30);  // set the hour and minute

请注意使用startOf('day'),这比将秒和毫秒分别设置为零更容易。

你也可以把它写成一行:

var m = moment.tz('Europe/Istanbul).startOf('day').hour(8).minute(30);

关于您在问题中写的代码 - format函数不应该用于获取单个部分。这些功能有单独的功能,.year().month().date()等。特别要注意,由于format功能是特定于语言环境的,因此您会看到编号的月份1-12,虽然作为month函数的整数或你构建的数组,它们预计为0-11。此外,当您构建newdate时,您没有保留任何时区信息,因此结果位于本地时区。