所以我在夏时制和.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();
,所以我如何检查local
的转换时间是否由utc
转换而来是DST
,然后正确格式化
答案 0 :(得分:2)
Here,他们说UTC绝不是DST。因此moment('anything...').utc().isDST()
将始终返回false。
下一步-通过documentation判断,isDST不设置任何内容,它是一种getter方法,如果时间对应于DST周期,则返回true,否则返回false。
不确定如何解决问题,但是utcOffset可能会有所帮助。如果您发现时间不对,请在此处添加/减去1小时,然后计算出来。
答案 1 :(得分:1)
这显示了它是如何工作的。您只需要在具有local()或DST适用的特定时区的时刻使用isDST()。我认为这仅适用于hh:mm。您可能需要一个实际日期(时间可选)来确定它是否是夏令时。
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>