在Javascript中将这样的日期格式转换为Fri Apr 20 2020 00:00:00 GMT + 0530(India Standard Time)到2020-04-20T00:00:00.000Z

时间:2020-04-20 08:44:46

标签: javascript reactjs date

我有一个"Fri Apr 20 2020 00:00:00 GMT+0530 (India Standard Time)"这样的日期格式

我想将上述格式转换为2020-04-20T00:00:00.000Z

格式

实际上,我在使用JSON.stringify(new Date("Fri Apr 20 2020 00:00:00 GMT+0530 (India Standard Time)"))的同时尝试了此操作2020-04-19T18:30:00.000Z

因此,请任何人帮助我将这种日期格式"Fri Apr 20 2020 00:00:00 GMT+0530 (India Standard Time)"转换为2020-04-20T00:00:00.000Z

预先感谢。

2 个答案:

答案 0 :(得分:1)

您的日期似乎是new Date()的标准字符串表示形式,您可以使用new Date().toISOString()

获得所需的格式

console.log(new Date().toString())
console.log(new Date().toISOString())

// To create it from string
let dateStr = "Fri Apr 20 2020 00:00:00 GMT+0530 (India Standard Time)"
console.log(new Date(dateStr).toISOString())

答案 1 :(得分:1)

Anurag Srivastava的答案显示了您应该如何 解析字符串并将其格式化为所需格式(假设字符串采用ECMA-262支持的两种格式之一,并考虑使用{{3} }。

请注意,“周五2020年4月20日格林尼治标准时间+0530(印度标准时间)”与“ 2020-04-19T18:30:00.000Z”的时间相同。第一个字符串从UTC偏移5小时30分钟,因此等效的UTC时间早5小时30分钟,这意味着日期是前一天。

您没有给出为什么要将其视为UTC而不考虑偏移的原因,所以我认为您不应该这样做。

但是,如果确实有充分的理由将其解析为UTC并忽略提供的偏移量,则可以:

  1. 修改输入字符串以将偏移量设置为+0并使用内置的解析器对其进行解析
  2. 自己解析字符串并将其视为UTC

let s = "Fri Apr 20 2020 00:00:00 GMT+0530 (India Standard Time)";

// #1 Modify the input string, setting the offset to +0
let d = new Date(s.replace(/GMT.*$/,'GMT+0000')).toISOString();

console.log(d.toISOString());

// #2 Bespoke parser
function parseAsUTC(s) {
  let months = ['jan','feb','mar','apr','may','jun',
                'jul','aug','sep','oct','nov','dec'];
  let b = s.split(/\W/);
  return new Date(Date.UTC(b[3], months.indexOf(b[1].toLowerCase()),
                           b[2], b[4], b[5], b[6]));
}

console.log(parseAsUTC(s).toISOString());