在JavaScript中将日期字符串从一个时区转换为另一个时区

时间:2018-02-22 14:57:06

标签: javascript

我花了几个小时试图弄清楚JavaScript如何处理日期。我遇到过这个问题,但似乎并不是我的具体问题。

我的输入是这样的字符串:

"2018-02-19T07:00:00Z"

我的目标是将其转换为与原始日期相差4小时的日期时间 - 没有任何时区(!):

"2018-02-19T11:00:00Z"

可以在JavaScript中使用吗?

2 个答案:

答案 0 :(得分:3)

查看与" UTC"相关的所有功能。和" ISO"在Date docs



var input = "2018-02-19T07:00:00Z";
var t = new Date(input);
t.setUTCHours(t.getUTCHours()+4)
var iso = t.toISOString().replace(/\.\d+/,'');
console.log(iso);




(我添加了一些小正则表达式以消除毫秒,因此它符合您的预期输出,如果毫秒不重要,您可以删除它,无论哪种方式都是有效的ISO。)

这4行代码,你不需要一个库。

答案 1 :(得分:1)

除了@Occam'sRazor回答之外,您还可以在不使用Date对象的情况下通过使用一些字符串操作来执行此操作:

var str = "2018-02-19T07:00:00Z";
var timeZoneHours = +str.split('-').pop().split(':')[0].split('T').pop() + 4;
console.log(timeZoneHours);

str = str.substring(0,str.indexOf(':') -2) + (timeZoneHours < 10 ? '0' + timeZoneHours.toString() : timeZoneHours.toString()) + str.substring(str.indexOf(':'), str.length);
console.log(str);