Неловкий формат даты в Java - PullRequest
0 голосов
/ 10 февраля 2012

У меня проблемы с анализом этой даты:

Satu, 30 Octo 2010 06:00:00 EDT

Я думаю, что это будет

EEEE, dd MMMM yyyy HH:mm:ss Z

но это не работает. Я хотел бы отформатировать его в

Saturday, October 30, 2010

Я смотрю на http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html как на мой ресурс

Ответы [ 2 ]

0 голосов
/ 29 февраля 2012
Month: If the number of pattern letters is 3 or more, the month is interpreted as text; otherwise, it is interpreted as a number. 

МММ не означает «первые три буквы».

И МММ, и ММММММММММММММ одинаковы.

Таким образом, ваш ввод должен быть как «октябрь» или «октябрь»

0 голосов
/ 10 февраля 2012

Честно говоря, я угробил бы Satu, и с тех пор просто разбирал.Вам это не нужно, и вы всегда можете использовать Calendar для определения дня недели / месяца / года.Смотрите здесь , чтобы узнать, что такое StringUtils.

String dateString = "Satu, 30 Octo 2010 06:00:00 EDT";

Map<String, String> weirdMonthMap = new HashMap<String, String>();
weirdMonthMap.put("Janu", "Jan");
//...
weirdMonthMap.put("Octo", "Oct");

for (String key: weirdMonthMap.keySet()) {
    dateString = StringUtils.replace(dateString, key, weirdMonthMap.get(key));
}

String[] pieces = StringUtils.split(dateString, ',');
if (pieces.length != 2)
    throw new IllegalArgumentException("Whoa! " + dateString);

dateString = pieces[1];

SimpleDateFormat format = new SimpleDateFormat(" dd MMM yyyy HH:mm:ss z");

System.out.println( format.parse(dateString) );
...