Создать новый объект Date с помощью moment.js

У меня есть строка:

date =  "2019/1/16 00:00 +0900"

Я в Нью-Йорке (часовой пояс -5), я хочу создать объект Date следующим образом:

Wed Jan 16 2019 00:00:00 GMT+0900

Я не могу использовать JavaScript для конвертации. Он вернется с часовым поясом -5. Я использую moment.js:

moment.tz(date, 'Asia/Tokyo').format('YYYY/MM/DD HH:MM');

Однако это не правильно. Не могли бы вы мне помочь. Большое спасибо.

2 ответа

Это сработает, если ваш объект даты является экземпляром момента:

moment.tz(moment(date), 'Asia/Tokyo').format('YYYY/MM/DD HH:MM Z')

Часовые пояса трудно получить право. Я думаю, что простое и несколько идиоматическое решение заключается в следующем:

const date = "2019/1/16 00:00 +0900";

// parse in any timezone
const dateMoment = moment(date); 

// deliberately set the timezone in which the moment is interpreted in
const timezonedMoment = dateMoment.tz('Asia/Tokyo'); 

// format the moment
const formattedDate = dateMoment.format('YYYY/MM/DD HH:MM z');

Конечно, вы бы написали это в более сжатой форме.

Другие вопросы по тегам