我花了几个小时试图弄清楚JavaScript如何处理日期。我遇到过这个问题,但似乎并不是我的具体问题。
我的输入是这样的字符串:
"2018-02-19T07:00:00Z"
我的目标是将其转换为与原始日期相差4小时的日期时间 - 没有任何时区(!):
"2018-02-19T11:00:00Z"
可以在JavaScript中使用吗?
答案 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);