为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Javascript 中将这样的日期格式转换为 2020 年 4 月 20 日星期五

如何在 Javascript 中将这样的日期格式转换为 2020 年 4 月 20 日星期五

侃侃无极 2022-07-08 16:12:18
我有这样的日期格式"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 回答

?
慕娘9325324

TA贡献1783条经验 获得超5个赞

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


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

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


// To create it from string

const dateStr = "Fri Apr 20 2020 00:00:00 GMT+0530 (India Standard Time)"

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


查看完整回答
反对 回复 2022-07-08
?
互换的青春

TA贡献1797条经验 获得超6个赞

Anurag Srivastava 的回答显示了您应该如何解析字符串并将其格式化为所需的格式(假设字符串是 ECMA-262 支持的两种格式之一,并考虑为什么 Date.parse 给出不正确的结果?)。

请注意,“Fri Apr 20 2020 00:00:00 GMT+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());


查看完整回答
反对 回复 2022-07-08
  • 2 回答
  • 0 关注
  • 210 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号