字符串到日历转换,同时保持时间

Wil*_*ill 0 java string formatting calendar

我正在尝试输出一个也包含时间的日历对象.我已经编写了一个使用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;
}
Run Code Online (Sandbox Code Playgroud)

我的输入字符串是"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)
Run Code Online (Sandbox Code Playgroud)

为什么它不能检测到15:05:00的时间?

Jon*_*eet 5

您需要使指定的日期格式与数据的实际格式相匹配.在这种情况下,您错过了冒号,并且您期望不存在的空格.看起来你的格式应该是"yyyyMMdd-HH:mm:ss".

此外,捕获并记录错误,然后继续当前日期,好像什么都没发生几乎肯定是错误的做法.为什么不宣布stringToCalendar抛出ParseException

(最后,我个人发现Joda Time是一个适合日期和时间工作的API.如果你正在做这样重要的工作,你至少应该看一下并考虑转换.)