从日期字符串中剥离时区并转换为Date对象

时间:2019-06-25 23:24:22

标签: javascript datetime

在此线程上问这个问题之前,我检查了以下可能的重复项:remove the local timezone from a date in javascript?

在我的情况下,执行此操作时未得到以毫秒为单位的日期,这会导致错误“无效的日期”:

// this is the date format I get as response from server
new Date("2018-09-17 14:02:09 +0530 IST")

因此,我不能在日期上使用toLocaleString()。不幸的是,我也不能在当前项目中使用moment.js,因为我需要获得许可才能包含外部库。

我知道可以使用split或regex,但是我觉得它们局限于特定的用例。

是否可以将"2018-09-17 14:02:09 +0530 IST"转换为"2018-09-17 14:02:09",或者只是将其转换为可读的日期字符串?

1 个答案:

答案 0 :(得分:1)

您应该将日期转换为GMT格式。我建议您将字符串重新格式化为"2018-09-17 14:02:09 GMT+0530"而不是"2018-09-17 14:02:09 +0530 IST"。我觉得应该通过使用slice轻松地操作字符串,因为无论给定时间如何,字符串中时区所在的位置的索引都将保持不变。

let response = "2018-09-17 14:02:09 +0530 IST";
let dateStr = response.slice(0,20);
dateStr += "GMT+0530";

这应该将字符串重新格式化为有效的日期输入。