Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaScript中将日期从UK GMT字符串转换为本地日期_Javascript_Datetime - Fatal编程技术网

在JavaScript中将日期从UK GMT字符串转换为本地日期

在JavaScript中将日期从UK GMT字符串转换为本地日期,javascript,datetime,Javascript,Datetime,我的情况是,服务器总是将日期作为UK日期时间字符串返回给我 例如,“2020-07-19 16:40:00” 这将是英国+01:00的下午4:40,或UTC的下午3:40 我希望能够在计算机上将这个时间从格林尼治标准时间转换为当地时间 如果我在英国这样做 var date = new Date('2020-06-19 16:40:00 GMT'); 它返回2020年6月19日星期五17:40:00 GMT+0100(英国夏季时间) 一个小时后 如果我在冬季计算日期(没有夏令时),这是正确的 v

我的情况是,服务器总是将日期作为UK日期时间字符串返回给我

例如,“2020-07-19 16:40:00”

这将是英国+01:00的下午4:40,或UTC的下午3:40

我希望能够在计算机上将这个时间从格林尼治标准时间转换为当地时间

如果我在英国这样做

var date = new Date('2020-06-19 16:40:00 GMT');
它返回
2020年6月19日星期五17:40:00 GMT+0100(英国夏季时间)

一个小时后

如果我在冬季计算日期(没有夏令时),这是正确的

var date = new Date('2020-01-19 16:40:00 GMT');
返回
太阳2020年1月19日16:40:00 GMT+0000(格林威治标准时间)

是否有一种方法可以根据英国的时钟时间,正确地调整此值,以始终给出正确的时间,而不管计算机设置在哪个时区


提前感谢

据我所知,您不知道服务器的时间戳是GMT还是BST,因为不包括偏移量。您可以使用简单的JS来解决这个问题,但它有点笨拙,而且容易出错,请参阅

最好让服务器使用ECMAScript支持的ISO 8601格式,并发送偏移量或始终使用UTC/GMT

如果这不是一个选项,您可以使用一个库来指定用于解析的位置(以及偏移量规则),例如

let DateTime=luxon.DateTime;
['2020-07-19 16:40:00',//BST+1
'2020-01-19 16:40:00'//GMT+0
].forEach(ts=>console.log(
fromFormat(ts,'yyyy LL dd HH:mm:ss',{zone:'Europe/London'}))
);

你试过了吗?@SebastianKaczmarek问题是解析,而不是格式化。非常感谢你的回答,你理解正确了。我稍后会和luxon一起尝试,然后再联系你。