Разбор дат Java с усеченной информацией о часовом поясе

Рассмотрим следующую строку даты

  • 2012-10-01 01:02:03.004+0500

Это признается в Java с использованием следующего SimpleDateFormat шаблон:

  • yyyy-MM-dd HH:mm:ss.SSSZ

Однако если указанная выше информация о часовом поясе усекается до 2 цифр, т.е.

  • 2012-10-01 01:02:03.004+05

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

Есть ли обходной путь для правильного анализа усеченного часового пояса без предварительной обработки строки?

Если нет, то какое регулярное выражение было бы оптимальным для этой предварительной обработки для большого числа таких строк даты в 1 раунде, например, с использованием replaceFirst() позвони, как в этом похожем вопросе?

1 ответ

Решение

Я не знаю хорошего решения без предварительной обработки строк, но если replaceFirst допустимо, вы можете использовать этот фрагмент кода:

dateStr.replaceFirst("(?<=[+-]\\d\\d)$", "00")

Этот код добавляет два ноля к строкам, оканчивающимся на <plus|minus><digit><digit> ( ссылка на ideone).

Другие вопросы по тегам