我正在尝试使用自定义小时和分钟创建一个时刻 - 时区对象,但是我一直收到无效的日期错误。
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());
我在这里缺少什么?谢谢。
答案 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
时,您没有保留任何时区信息,因此结果位于本地时区。