JavaScript сравнивает разные форматы даты?

Я пытаюсь извлечь разные форматы даты из текста, а затем сравнить эти даты, если они принадлежат какому-то промежутку времени. Допустим, промежуток времени с 1.1.2013 по 1.3.2013. Это формат времени ДД/ММ/ГГГГ.

Теперь, как я могу извлечь различные форматы времени из текста. У меня есть примеры форматов времени.

  • Вт, 23 октября 2012 г., 7:59
  • 19 февраля 2013 г., 19:32
  • Сегодня, 21:22
  • Вчера, 09:03
  • 28 февраля 2013 09:38
  • Вчера 16:48
  • 8 окт. 2012 г. 5:41:00
  • 02-18-2013, 03:17 PM
  • 02-01-13, 12:31 PM
  • 12.2.2013 20:43

Я понимаю, что это непростая задача, но любое предложение может мне помочь.

Также я знаю об этом вопросе и ответах. Это пригодится мне позже

Сравните две даты с помощью JavaScript

Также ребята в чате сказали это.

Uwe Günther
@IceD looks like you need some lib who implements that all :-) 
But ih ave noe clue which one does. Better ask the Stack

ВАЖНО

Я не хочу использовать jQuery, так как не могу реализовать его в том, что сейчас использую. Так что только JS-решения для этого.


person macroscripts    schedule 02.03.2013    source источник
comment
Просто к вашему сведению, не все можно сделать проще с помощью jQuery. jQuery в первую очередь предназначен для манипулирования Ajax и DOM, и вам не нужно ни то, ни другое. Итак, вы против какой-либо библиотеки или только jQuery? По сути, вам нужен набор регулярных выражений и/или конечный автомат для сопоставления текста. Сложности возникают, когда разные шаблоны выглядят одинаково, например. MM/DD/YYYY и DD/MM/YYYY.   -  person Felix Kling    schedule 02.03.2013


Ответы (1)


Вам нужно будет нормализовать их до общего сопоставимого формата, наиболее подходящего Date объектов.

Для некоторых ваших форматов (некоторые браузеры) смогут Date.parse их, но для других (например, "yesterday") вам нужно сделать более сложный анализ (вплоть до НЛП?). Было бы лучше, если бы вы знали формат каждого фрагмента, чтобы вы могли передать их правильному алгоритму синтаксического анализа, в противном случае вам нужно будет применить некоторые эвристики.

person Bergi    schedule 02.03.2013