繁体   English   中英

检查夏令时时刻js

[英]check if daylight savings time moment js

所以我遇到了夏令时和.isDST()标志的问题。

因此,我有一个时间选择器,用户可以在其中设置一个开始时间,然后我将两个数字值(小时和分钟)设置为类似这样的矩对象。

this.startTime = moment(`${this.hour}:${this.minute} ${this.timeOfDay}`, `hh:mm a`).utc();

现在可以保存所有数据,但是当我得到它时,由于夏时制而返回了一个小时。.现在我知道.isDST()标志,但是我不确定该在哪里设置。

我试过了

this.startTime = moment(`${this.hour}:${this.minute} ${this.timeOfDay}`, `hh:mm a`).utc().isDST(); 

但是返回的日期无效,我也尝试过返回。

time = moment(startTime).local().format('hh:mm').isDST(); 
time = moment(startTime).isDST().local().format('hh:mm');
time = moment(startTime).local().isDST().format('hh:mm');

但是这些都不起作用...

解决此问题的正确方法是什么?

编辑

为了澄清..我如何在官方文档中使用.isDST(),它只是说moment().isDST(); 所以我该如何检查Ive从utc转换的local是否是DST ,然后正确格式化

他们在这里说UTC绝不是DST。 因此moment('anything...').utc().isDST()将始终返回false。

接下来-根据文档判断,isDST不设置任何内容,它是一种getter方法,如果时间对应于DST周期,则返回true,否则返回false。

不确定如何解决您的问题,但是utcOffset可能会有所帮助。 如果您发现时间不正确,请在此处添加/减去1小时,然后计算出来。

这显示了它是如何工作的。 您只需要在具有local()或DST适用的特定时区的时刻使用isDST()。 我认为这仅适用于hh:mm。 您可能需要一个实际日期(时间可选)来确定它是否是DST。

 console.log(moment().utc().isDST()); console.log(moment().tz("America/New_York").isDST()); 
 <script src="https://momentjs.com/downloads/moment.js"></script> <script src="https://momentjs.com/downloads/moment-timezone-with-data.js"></script> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM