SimpleDateFormat转换在某些日期失败



所以我试图在我的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);

这很好,并正确地转换为2006年3月。但是,如果我将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";

干杯!

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

我的实际代码也有一个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定义,它会很好地工作,所以我会将其标记为已解决。如果有人能解释为什么它会有所不同,那就太棒了。

您可以在这里找到一些示例http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

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

编辑:当日期从0到9时,正确的字符是"d",当我们从00到09时,正确方式是"dd",与月份和年份相同。

最新更新