我有一个"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
预先感谢。
答案 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并忽略提供的偏移量,则可以:
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());