首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正确创建moment-timezone对象

正确创建moment-timezone对象
EN

Stack Overflow用户
提问于 2015-12-23 19:27:23
回答 1查看 127关注 0票数 0

我试图创建一个带有自定义小时和分钟的moment-timezone对象,但是我一直收到无效日期错误。

代码语言:javascript
复制
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

代码语言:javascript
复制
console.log(newdate.isValid());

这里我漏掉了什么?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2015-12-28 03:12:32

没有单独的“时刻-时区对象”。Moment-timezone增加了moment对象。因此,您应该只将变量命名为moment,而不是momenttz。这是from the docs

代码语言:javascript
复制
var moment = require('moment-timezone');

然后照你说的做:

代码语言:javascript
复制
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')的用法,它比将秒和毫秒分别设置为零更容易。

您也可以将以下代码写成一行:

代码语言:javascript
复制
var m = moment.tz('Europe/Istanbul).startOf('day').hour(8).minute(30);

关于你在问题中写的代码-- format函数不应该用来获取单独的部分。.year().month().date()等有单独的函数。特别要注意的是,由于format函数是特定于区域设置的,您将看到月份编号为1-12,而使用month函数或在您构建的数组中作为整数,它们应该是0-11。此外,在构造newdate时,您没有保留任何时区信息,因此结果为本地时区。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34434669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档