Java中的尴尬日期格式

时间:2012-02-09 21:14:30

标签: java date simpledateformat

我在解析此日期时遇到问题:

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 :(得分:0)

老实说,我放弃Satu,,然后再解析。您不需要它,并且始终可以使用Calendar来计算星期几/月/年。有关StringUtils的信息,请参阅here

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) );

答案 1 :(得分:0)

Month: If the number of pattern letters is 3 or more, the month is interpreted as text; otherwise, it is interpreted as a number. 

MMM并不意味着“前三个字母”。

MMM和MMMMMMMMMMMMMM都相同。

所以你的输入应该是“十月”或“十月”