Я сделал преобразование времени между исходным временем «Азия / Джакарта» (GMT + 7) и «Азия / Токио» (JST). Фактическая разница составляет 2 часа (GMT + 7 00:00, JST 02:00). В процессе разработки возвращается истинное значение, подобное следующему:
24 Januari 2020, 00:00 GMT+7
24 Januari 2020, 02:00 JST
Но при загрузке на рабочий сервер (сервер был размещен в Нью-Йорке, США), преобразование было неверным. Возвращаясь
24 Januari 2020, 00:00 GMT+7
24 Januari 2020, 09:00 JST
Я думал, что мне нужно установить часовой пояс по умолчанию, но ошибка становилась все хуже. И получил
25 Januari 2020, 07:00 GMT+7
25 Januari 2020, 09:00 JST
Вот код, который я пишу:
// calling the modules
const moment = require('moment');
const momentTz = require('moment-timezone');
//... initializing code
moment.locale('id');
moment.tz.setDefault('Asia/Jakarta');
// args[1] = '24/01'
// args[2] = '00:00'
try {
const timeFormat = 'Do MMMM YYYY, HH:mm';
const dateSplit = args[1].split('/');
const date =
dateSplit[1] + '/' + dateSplit[0] + '/' + moment().format('YYYY');
const dateTime = Date.parse(`${date} ${args[2]}`);
const livestreamDateTime = moment(dateTime).format(timeFormat);
const livestreamDateTimeJapan = momentTz
.tz(dateTime, 'Asia/Tokyo')
.format(timeFormat);
const vliverFirstName = args[0].toLowerCase();
const vData = vliver[vliverFirstName];
const youtubeId = args[3];
// ...
// ... showing the output and catching error underneath
Дата, которую я получил от ввода пользовательского ввода. Поэтому, когда пользователь вводит 24/01 00:00
, он говорит, что дата 24 January 2020 00:00 GMT+7
РЕДАКТИРОВАТЬ: Я проверил дату производственного сервера. Он показывает мой часовой пояс GMT + 7.