之前有人提出过这样的问题,但我的情况有点棘手。 我有一个UTC的日期时间。无论我们通过什么,我都希望将它转换为特定的时区。 目前我正在使用时刻时区库。 它会发生什么,它会在浏览器的时区中考虑提供的时间,然后尝试在提供的时区中进行转换。 我想提供一些时间来考虑UTC。
js code:
var datetime = '2015/04/10 15:35:00';
datetime = moment(datetime).format('YYYY-MM-DD HH:mm:ss');
datetime = moment.utc(datetime);
return moment(datetime).tz(siteTimeZone).format('YYYY-MM-DD HH:mm:ss');
我也尝试过直接应用utc,如:
var datetime = '2015/04/10 15:35:00';
datetime = moment.utc(datetime).format('YYYY-MM-DD HH:mm:ss');
return moment(datetime).tz(siteTimeZone).format('YYYY-MM-DD HH:mm:ss');
但它们都没有按预期工作。我可能还不清楚时刻如何运作。
请帮忙。
谢谢!
答案 0 :(得分:2)
在转换到时区之前,只需解析为utc。
var datetime = '2015/04/10 15:35:00';
return moment.utc(datetime,'YYYY/MM/DD HH:mm:ss')
.tz(siteTimeZone)
.format('YYYY-MM-DD HH:mm:ss');
另请注意,我在解析时提供了一个格式字符串,它与传入的值的格式相匹配。这是一个很好的做法,可以防止在控制台上生成警告。
答案 1 :(得分:0)
在Date对象中获取字符串,然后使用datetime.toUTCString()
从中获取UTC字符串,最后设置timeZone&格式,如下:
以下是经过测试的代码:
var datetime = new Date('2015/04/10 15:35:00');
datetime = datetime.toUTCString();
datetime = moment(new Date(datetime)).tz(siteTimeZone).format('YYYY-MM-DD HH:mm:ss');