SimpleDateFormat转换在某些日期失败

时间:2015-03-06 12:41:54

标签: java android

所以我试图在我的Android应用中将日期字符串从一种格式转换为另一种格式。这是一些代码。

 final String OLD_FORMAT = "d-MM";
 final String NEW_FORMAT = "MMM d";
 String oldDateString = "06-03";
 Date d = sdf.parse(oldDateString);
 sdf.applyPattern(NEW_FORMAT);
 String newDateString = sdf.format(d);

这很好用,并且正确转换为Mar 06.但是,如果我将oldDateString更改为" 09-04"它崩溃了。

java.text.ParseException: Unparseable date: "09-04" (at offset 0)

我茫然。任何人都有任何想法导致问题?

我使用包含以下SQL查询中的日期和值的列表来提供日期转换功能。

String sql = "SELECT strftime('%d-%m', timestamp) as valDate, COUNT(*) FROM log GROUP BY valDate LIMIT 7";

干杯!

2 个答案:

答案 0 :(得分:0)

所以原因问题完全是我的错,如果我发布了很久以前有人可能会指出这个问题的完整代码。

我的实际代码中还有一个while循环..我将它从原始帖子中删除以稍微消毒它

SimpleDateFormat sdf = new SimpleDateFormat(OLD_FORMAT);
while (i < 10){
try{
 final String OLD_FORMAT = "d-MM";
 final String NEW_FORMAT = "MMM d";
 String oldDateString = "06-03";
 Date d = sdf.parse(oldDateString);
 sdf.applyPattern(NEW_FORMAT);
 String newDateString = sdf.format(d);
}
 ....
}

这导致了错误的行为。但是,如果我在while部分中移动sdf定义,它可以正常工作,所以我将此标记解决了。如果有人能解释为什么它会有所作为,那将是非常棒的。

答案 1 :(得分:-1)

您可以在http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

找到一些示例

在这种情况下,您必须使用dd-MM

编辑:当日期从0到9时,正确的字符是&#39; d,当我们有00到09时,正确的方式是&#39; dd&#39;,与Months相同,和年。