2015-09-24 2 views
0

В моей стране мы используем британские форматы даты. Может ли синтаксический анализатор, который может преобразовать строку даты, написанную с использованием любых форм британских форматов даты, в действительный объект даты Java?Java-парсер даты, который читает все британские форматы даты

+0

Что случилось с ['SimpleDateFormat'] (http://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html)? – npinti

+1

Я думаю, что в одной из библиотек Apache Commons есть утилитный метод, который позволит вам передать ему «String» и список форматов для его попытки, он вернет обратно либо объект «Date», либо «null» или 'Exception', если он не может найти правильное соответствие. Это, скорее всего, лучшее, что вы получите – MadProgrammer

+0

a) Вам нужно сказать, в каком формате вы ожидаете. b) Он определяет приоритеты форматов США по сравнению с британскими. c) Лучшим вариантом является utils для Apache, но вам все равно необходимо предоставить все возможные форматы даты. –

ответ

1

Из комментариев:

Анализатор должен поддерживать любой формат даты, мы можем себе представить, и даже те, которые мы не думали о том, но все еще имеет смысл.

Это означает, что такие вещи, как:

14/3/2011 
14/03/2011 
14/3/11 
14 March 2011 
14th March 2011 
2011-03-14 
2011-3-14 
March 14, 2011 (just for kicks) 
the Fourteenth of March, 2011 (ok, maybe not this one) 
NOT: 3/14/2011 

Если вы хотите поддерживать все из них, у вас есть два варианта:

  1. перебирать список конкретных форматов, пока один не работает.
  2. Напишите свой собственный парсер, используя регулярные выражения.

Написание собственного анализатора облегчает поддержку странных вариантов, если это необходимо.

Смежные вопросы