【发布时间】:2020-01-23 08:31:51
【问题描述】:
我在原始时间“亚洲/雅加达”(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 时区。
【问题讨论】:
标签: node.js momentjs moment-timezone