所以我试图在我的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";
干杯!
答案 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相同,和年。