barbitoff programmer`s blog

Здесь я публикую заметки из программерской жизни: грабли, на которые мне случилось наступить, проблемы, для которых было найдено элегантное (или не очень) решение, а также все, с чем мне пришлось столкнуться и чем хотелось бы поделиться =)
PS Если хотите меня поблагодарить - на странице есть 3 места, чтобы это сделать =)

среда, 26 октября 2016 г.

Java: парсинг дат сразу по нескольким шаблонам

Задача

Есть некая дата/время в строковом представлении, при этом она может быть в одном из нескольких различных форматов (допустим, с миллисекундами или без, с таймзоной или без нее). Необходимо распарсить такую дату.

Решение

Конечно, можно использовать несколько SimpleDateFormat и цепочку из try-catch, т.е. пробовать распарсить с использованием очередного формата, ловить ParseException, после чего пробовать следующий формат. Но можно воспользоваться библиотекой commons-lang от Apache, ниже приведен пример ее использования на Groovy:
import org.apache.commons.lang.time.DateUtils;
def sourceFormats = [
"yyyy-MM-dd'T'HH:mm:ss.SSS",
"yyyy-MM-dd'T'HH:mm:ss",
"yyyy-MM-dd'T'HH:mm:ss.SSSXXX",
"yyyy-MM-dd'T'HH:mm:ssXXX"
];;
sourceFormats = sourceFormats.toArray(new String[1]); // convert ArrayList to String Array
def date = DateUtils.parseDate(stringValue, sourceFormats);

Комментариев нет:

Отправить комментарий