Проверьте, есть ли строка даты в формате ISO и UTC - PullRequest
0 голосов
/ 18 октября 2018

У меня есть строка с этим форматом 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

Ответы [ 3 ]

0 голосов
/ 18 октября 2018

Я думаю, что вы хотите:

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'); 
}

Надеюсь, это понятно!

0 голосов
/ 18 октября 2018
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
}
0 голосов
/ 18 октября 2018

Попробуйте: вам нужно создать объект даты, а не анализировать строку.

ПРИМЕЧАНИЕ. При этом строка будет проверена в том виде, в котором вы ее разместили.

YYYY-MM-DDTHH:MN:SS.MSSZ

Не удастся выполнить действительные значения ISO8601 , например

  • Дата: 2018-10-18
  • Объединенные дата и время в UTC: 2018-10-18T08: 04: 30 + 00: 00 (без Z и TZ в 00:00)
  • 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}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'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...