каков самый простой способ преобразовать «2021-11-26 21:47» в объект даты с определенным часовым поясом?

#javascript

#язык JavaScript

Вопрос:

Я знаю, что есть date-fns-tz и luxon, но я не могу понять, как это сделать, используя только CDN. Итак, задача состоит в следующем:

в качестве входных данных используется строка (может быть разной): 2021-11-26 21:47 и она должна возвращать объект даты с 2021-11-26 21:47 Europe/Moscow (или соответствующим временем в UTC, это не имеет значения.

Все мои попытки использовать luxon для этого провалились. Буду рад услышать любые советы

Ответ №1:

Прикрепите часовой пояс и создайте объект даты (может быть ненадежным в зависимости от реализации в среде выполнения).

 let inputString = '2021-11-26 21:47'; new Date(inputString   ' UTC 3')  

Чтобы соответствовать стандарту ISO 8601, вы можете переформатировать дату как таковую (если вы уверены, что она всегда будет в этом формате YYYY-MM-DD HH:MM ).

 new Date(inputString.replace(' ', 'T')   ' 03:00')  

Ответ №2:

Вы можете использовать Date.parse() обычный js для создания новой даты, используя строку в качестве входных данных.

 let d = new Date(Date.parse('2021-11-26 21:47'))  

d это объект даты, у которого уже есть правильный часовой пояс.

В моем случае:

 console.log(String(d)); // Fri Nov 26 2021 21:47:00 GMT-0300 (lt;countrygt; Standard Time)  

Комментарии:

1. Это нестандартный формат Date.parse() , поэтому синтаксический анализ будет зависеть от реализации. Подмножество ISO 8601, которое официально поддерживается '2021-11-26T21:47' , — T это часть между датой и временем.

2. Спасибо, что разъяснили это. В этом случае, если бы ОП хотел использовать эту опцию, ему/ей нужно было бы нормализовать строку перед ее анализом.

Ответ №3:

Я всегда использовал это преобразование и отлично подходит для дат UTC

 new Date('2021-11-26 21:47').toUTCString() = 'Sat, 27 Nov 2021 02:47:00 GMT'