#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'