所以我试图在我的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",与月份和年份相同。