Разбор нестандартного формата даты, например "+ 0yyyyMMdd" - PullRequest
2 голосов
/ 29 июня 2010

У меня есть дата, которая поступает в нашу систему в формате + 0yyyyMMdd

Например, 12 марта 2011 года: + 020110312

На данный момент это определенно символ + и один 0 до даты, но в будущем это может быть больше чем один ноль , например. + 000020110312

Можно ли проанализировать его со стандартным Java java.text.DateFormat.parse (String source) ?

Или мне стоит написать собственный метод разбора?

Спасибо.

Ответы [ 4 ]

4 голосов
/ 29 июня 2010

Я думаю, +0 - это индикатор часового пояса, поэтому вы можете попробовать:

new SimpleDateFormat("ZyyyyddMM")

Увы, это не сработает сразу.

Чтобы заставить его работать, получите подстроку от 0 до length - 8 и расширите ее до четырех цифр, чтобы соответствовать RFC для часового пояса.См. SimpleDateFormat

.
2 голосов
/ 29 июня 2010

Если префикс +0 является константой, вы можете просто заключить его в кавычки.

String string = "+020110312";
Date date = new SimpleDateFormat("'+0'yyyyMMdd").parse(string);
System.out.println(date); // Sat Mar 12 00:00:00 GMT-04:00 2011

(результат правильный в соответствии с моим часовым поясом)

Обратите внимание, что месяцы представлены MM, а не mm. mm представляет минуты. Использование mm в течение нескольких месяцев может повредить результат анализа.

Смотри также:


Обновление : так как в будущем это может измениться ", но в будущем это может быть больше, чем один ноль" , лучше рассмотреть подстроку последних 8 символов. 1026 *

String string = "+020110312";
Date date = new SimpleDateFormat("yyyyMMdd").parse(string.substring(string.length() - 8));
System.out.println(date); // Sat Mar 12 00:00:00 GMT-04:00 2011
0 голосов
/ 29 июня 2010

Вы можете проанализировать часть даты, используя SimpleDateFormat.

SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
df.parse("20110312");

Но вам нужно убрать префикс "+000".

0 голосов
/ 29 июня 2010

Я бы вычленил последние 8 символов из вашего представления и затем проанализировал его.(Я не уверен, что вы можете безопасно избежать этого)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...