проверить, есть ли момент перехода на летнее время - PullRequest
0 голосов
/ 09 октября 2018

Итак, у меня проблема с переходом на летнее время и флагом .isDST ()vaues (часы и минуты) и преобразовать его в мгновенный объект, например, так ...

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 и затем отформатируйте его правильно

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Здесь говорят, что UTC никогда не является летним временем.Так что moment('anything...').utc().isDST() всегда будет возвращать false.

Далее - судя по документации , isDST ничего не устанавливает, это метод get, который возвращает true, если время соответствует периоду DST, и falseв противном случае.

Не знаю наверняка, как решить вашу проблему, но, возможно, utcOffset может помочь.Если вы видите, что время не подходит, добавьте / вычтите туда 1 час, и это должно сработать.

0 голосов
/ 09 октября 2018

Это показывает, как это работает.Вам просто нужно использовать isDST () в определенный момент с местным () или конкретным часовым поясом, где применяется 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>
...