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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了检查日期字符串是否为ISO和UTC格式相关的知识,希望对你有一定的参考价值。

我有一个这种格式的字符串2018-02-26T23:10:00.780Z我想检查它是否是ISO8601和UTC格式。

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这样的库

答案

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

注意:这将测试字符串AS YOU POSTED IT。

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-W42
  • 周编号:2018-W42-4
  • 没有年份的日期: - 10-18(最后在ISO8601:2000中,由RFC 6350使用[2])*序数日期:2018-291

function isIsoDate(str) {
  if (!/d{4}-d{2}-d{2}Td{2}:d{2}:d{2}.d{3}Z/.test(str)) return false;
  var d = new Date(str); 
  return d.toISOString()===str;
}

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

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

我想你想要的是:

let date= '2011-10-05T14:48:00.000Z';
const dateParsed = new Date(Date.parse(date))

if(dateParsed.toISOString() === date && dateParsed.toUTCString() === new Date(d).toUTCString()){
   return  date;
} else {
     throw new BadRequestException('Validation failed'); 
}

我希望很清楚!

另一答案
let date= '2011-10-05T14:48:00.000Z';
var dateParsed= new Date(Date.parse(date));
//dateParsed
//output: Wed Oct 05 2011 19:48:00 GMT+0500 (Pakistan Standard Time)
if(dateParsed.toISOString()==date) {
   //Date is in ISO
}else if(dateParsed.toUTCString()==date){
  //DATE os om UTC Format
}

以上是关于检查日期字符串是否为ISO和UTC格式的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中解析/创建格式为小数秒 UTC 时区(ISO 8601、RFC 3339)的日期时间戳?

检查 mongodb 中的日期时间对象是不是为 UTC 格式或不是来自 python

REST GET API 的推荐日期格式

Python:检查解析的日期时间是不是具有正确的时区

将 UTC 日期格式转换为本地 nsdate

使用 ajv 验证 UTC 日期/日期时间,但允许空字符串