我有一个格式为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');
}
这里的问题是:
1317826080000
,以便无法将其与ISO或UTC格式进行比较。我会避免使用诸如moment.js之类的库
答案 0 :(得分:2)
尝试一下-您实际上需要创建一个日期对象而不是解析字符串
注意:这将在您发布时测试字符串。
YYYY-MM-DDTHH:MN:SS.MSSZ
它将在valid ISO8601个日期上失败
function isIsoDate(str) {
if (!/\d{4}-\d{2}-\d{2}T\d{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'));
答案 1 :(得分:0)
我认为您想要的是:
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');
}
我希望这很清楚!
答案 2 :(得分:0)
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
}