gpt4 book ai didi

javascript - 检查日期字符串是否为 ISO 和 UTC 格式

转载 作者:搜寻专家 更新时间:2023-10-30 21:19:06 26 4
gpt4 key购买 nike

我有一个格式为 2018-02-26T23:10:00.780Z 的字符串我想检查它是否采用 ISO8601UTC 格式。

let date= '2011-10-05T14:48:00.000Z';
const error;
var dateParsed= Date.parse(date);
if(dateParsed.toISOString()==dateParsed && dateParsed.toUTCString()==dateParsed) {
return date;
}
else {
throw new BadRequestException('Validation failed');
}

这里的问题是:

  • 我没听懂错误信息
  • Date.parse() 改变字符串日期格式为1317826080000所以无法将其与 ISO 或 UTC 格式进行比较。

我会避免使用像 moment.js 这样的库

最佳答案

试试这个——你需要实际创建一个日期对象而不是解析字符串

注意:这将测试您发布的字符串。

YYYY-MM-DDTHH:MN:SS.MSSZ

它将在 valid ISO8601 上失败像这样的日期

  • 日期:2018-10-18
  • UTC 中的组合日期和时间:2018-10-18T08:04:30+00:00(00:00 中没有 Z 和 TZ)
  • 2018-10-18T08:04:30Z
  • 20181018T080430Z
  • 周:2018 年第 42 周
  • 带有周数的日期:2018-W42-4
  • 没有年份的日期:--10-18(ISO8601:2000 中的最后一个,由 RFC 6350[2] 使用)
  • 序号日期:2018-291

它将不再接受无效的日期字符串

function isIsoDate(str) {
if (!/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z/.test(str)) return false;
const d = new Date(str);
return d instanceof Date && !isNaN(d) && d.toISOString()===str; // valid date
}

console.log(isIsoDate('2011-10-05T14:48:00.000Z'))

console.log(isIsoDate('2018-11-10T11:22:33+00:00'));

console.log(isIsoDate('2011-10-05T14:99:00.000Z')); // invalid time part

关于javascript - 检查日期字符串是否为 ISO 和 UTC 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52869695/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com