Строка для разговора в календаре с сохранением времени - PullRequest
0 голосов
/ 17 июня 2011

Я пытаюсь вывести объект календаря, который также содержит время.Я написал метод, чтобы сделать это, используя 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 как время?

Ответы [ 4 ]

5 голосов
/ 17 июня 2011

Вам необходимо сделать так, чтобы указанный формат даты соответствовал формату фактический данных. В этом случае вам не хватает двоеточий, и вы ожидаете пробелы, которых не существует. Похоже, ваш формат должен быть "yyyyMMdd-HH:mm:ss".

Кроме того, перехватывать и регистрировать ошибку, а затем продолжать с текущей датой, как будто ничего не произошло, почти наверняка неправильно. Почему бы просто не объявить, что stringToCalendar бросает ParseException?

(Наконец, я лично нахожу, что Joda Time - это намного приятный API для работы с датой и временем. Если вы выполняете значительную работу, подобную этой, вам следует хотя бы посмотреть на это и рассмотрим переключение.)

1 голос
/ 20 июня 2012
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;
}
1 голос
/ 17 июня 2011

Вы не пропускаете двоеточия, как yyyyMMdd - HH:mm:ss? Также вы можете посмотреть дополнительные места.

0 голосов
/ 17 июня 2011

"ггггММдд - ЧЧммсс" -> " ггггМмдд-чч: мм: сс "

...