我正在尝试输出一个也包含时间的日历对象。我已经使用SimpleDateFormat编写了一个方法来实现这一点。
public static Calendar stringToCalendar(String string)
{
Calendar cal = Calendar.getInstance();
DateFormat formatter = new SimpleDateFormat("yyyyMMdd - HHmmss");
Date date = new Date();
try {
date = formatter.parse(string);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
cal.setTime(date);
return cal;
}
我的输入字符串是“20110614-15:05:00”
然而,它不喜欢这个值,并给了我以下错误:
java.text.ParseException: Unparseable date: "20110614-15:05:00"
at java.text.DateFormat.parse(DateFormat.java:337)
at transformer.Converter.stringToCalendar(Converter.java:22)
为什么它不能在15:05:00检测到它?
答案 0 :(得分:5)
您需要使指定的日期格式与数据的实际格式匹配。在这种情况下,你错过了冒号,和你期望不存在的空格。看起来您的格式应为"yyyyMMdd-HH:mm:ss"
。
此外,捕获并记录错误但随后继续当前日期,好像什么都没发生几乎肯定是错误的做法。为什么不宣布stringToCalendar
抛出ParseException
?
(最后,我个人发现Joda Time是一个很多更好的API用于日期和时间工作。如果你正在做这样的重要工作,你至少应该看一下并且考虑切换。)
答案 1 :(得分:1)
你是不是错过了冒号,比如yyyyMMdd - HH:mm:ss
?您也可以观看额外的空间。
答案 2 :(得分:1)
public static Calendar string2Calendar(String string) {
SimpleDateFormat formatter;
Date date = null;
formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm");
try {
date = (Date) formatter.parse(string);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Calendar cal = Calendar.getInstance();
cal.setTime(date);
Logger.printMessage("tag", String.format("%tc", cal),
Logger.DEBUG);
return cal;
}
答案 3 :(得分:0)
“yyyyMMdd - HHmmss” - > “的 YYYYMMDD-HH:MM:SS 强>”