正确创建时刻时区对象

creating moment-timezone object properly

本文关键字:时区 对象 时刻 创建      更新时间:2023-09-26

我试图创建一个具有自定义小时和分钟的时刻时区对象,但我一直收到无效的日期错误。

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]);

验证返回错误

console.log(newdate.isValid());

我在这里错过了什么?非常感谢。

没有单独的"时刻时区对象"。时刻时区增加了时刻对象。因此,您应该只调用变量moment,而不是momenttz。这是来自文档:

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