Javascript 正确创建矩时区对象

Javascript 正确创建矩时区对象,javascript,momentjs,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')); va

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

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());
我错过了什么?谢谢。

没有单独的“时刻时区对象”。矩时区增加矩对象。因此,您应该只调用变量
momentz
,而不是
momenttz
。这是:

然后按照你的要求去做:

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
时,您没有保留任何时区信息,因此结果是在本地时区。

您可以将其放入吗?我不确定如何在JSFIDLE上运行节点js代码。但是我修复了
parseInt(now.format('M'))-1的问题
var m = moment.tz('Europe/Istanbul).startOf('day').hour(8).minute(30);