Если вы уже используете Moment и Moment-TimeZone в своем приложении, то вы можете просто сделать следующее:
const m = moment.tz('2020-07-12 13:00', 'YYYY-MM-DD HH:mm', 'Europe/Amsterdam');
m.format() //=> "2020-07-12T13:00:00+02:00"
Однако команда Moment рекомендует использовать Luxon для новых развитие. Эквивалент:
const dt = luxon.DateTime.fromFormat('2020-07-12 13:00', 'yyyy-MM-dd HH:mm', { zone: 'Europe/Amsterdam'});
dt.toISO() //=> "2020-07-12T13:00:00.000+02:00"
Единственное отличие состоит в том, что включены миллисекунды. Вы можете использовать другую функцию форматирования, если вы предпочитаете другой вывод.
Основное преимущество Luxon состоит в том, что он использует встроенную функциональность часового пояса, предоставляемую API интернационализации ECMAScript, тогда как Moment-Timezone связывает свой собственный данные о часовом поясе - которые могут быть довольно большими.
Также обратите внимание, что, задавая вопрос 2020-07-12T11:00:00+02:00
, вы задаете вопрос о том, что вы неправильно понимаете формат ISO 8601. В этом формате время составляет местное время. Таким образом, это должно быть 13:00
, а не 11:00
. +02:00
означает, что «это было смещение от UT C для этого местного времени ». (Это не означает, что вы применяете смещение для получения местного времени.)