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

在JavaScript中将日期字符串从一个时区转换为另一个时区,javascript,Javascript,我花了几个小时试图弄清楚JavaScript是如何处理日期的。我遇到过这个问题,但它似乎不是我的具体问题 我的输入是如下所示的字符串: "2018-02-19T07:00:00Z" 我的目标是将其转换为与原始日期相差4小时的日期时间-无任何时区(!): 是否可以在JavaScript中使用它?查看屏幕上与“UTC”和“ISO”相关的所有函数 var input=“2018-02-19T07:00:00Z”; var t=新日期(输入); t、 setUTCHours(t.getUTCHour

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

我的输入是如下所示的字符串:

"2018-02-19T07:00:00Z"
我的目标是将其转换为与原始日期相差4小时的日期时间-无任何时区(!):


是否可以在JavaScript中使用它?

查看屏幕上与“UTC”和“ISO”相关的所有函数

var input=“2018-02-19T07:00:00Z”;
var t=新日期(输入);
t、 setUTCHours(t.getUTCHours()+4)
var iso=t.toISOString().replace(/\。\d+/,“”);
控制台日志(iso)除了回答,您还可以不使用
日期
对象,通过使用一些字符串操作来完成回答:

var str=“2018-02-19T07:00:00Z”;
var timeZoneHours=+str.split('-').pop().split(':')[0].split('T').pop()+4;
console.log(时区小时);
str=str.substring(0,str.indexOf(':')-2)+(timeZoneHours<10?'0'+timeZoneHours.toString():timeZoneHours.toString())+str.substring(str.indexOf(':')),str.length);

console.log(str)
我在评论中写这篇文章是因为它不是一个普通的javascript解决方案,但是你应该检查
没有任何时区(!)
你是什么意思(?)我的意思是,
2018-02-19T011:00:00Z
,而不是
2018-02-19T07:00:00Z+04.00
提示:-)就像@Bergi所说的,你实际上在操纵一个时区。最后一个字符串也将包含一个。对我来说,它不起作用。它产生了
2018-02-19T15:00:00Z
。显然,这是因为我的本地时区也是+4 GMT。所以逻辑是15=7+4+4。@EdgarNavasardyan-你是说当你点击“运行代码片段”按钮时,它会显示
2018-02-19T15:00:00Z
?我不确定这怎么可能,因为这段代码使用UTC时间,而UTC时间与您的时区无关。不管你的时区是什么,这段代码都应该给出相同的结果。不,我告诉你,在我的JS代码中,它显示的是15而不是11,那么你的代码和我的不同。如果你使用我给你的代码,那么你在世界的哪个角落都无关紧要。
"2018-02-19T11:00:00Z"