Преобразуйте Строку в java.util. Дата

Я храню даты в базе данных SQLite в этом формате:

d-MMM-yyyy,HH:mm:ss aaa

Когда я получаю дату с тем форматом, я, получают каждую вещь, прекрасную кроме часа. Час всегда 00. Вот мой вывод:

String date--->29-Apr-2010,13:00:14 PM
After convrting Date--->1272479414000--Thu Apr 29 00:00:14 GMT+05:30 2010

Вот код:

    Date lScheduledDate = CalendarObj.getTime();
    DateFormat formatter = new SimpleDateFormat("d-MMM-yyyy,HH:mm:ss aaa");
    SomeClassObj.setTime(formatter.format(lScheduledDate));

    String lNextDate = SomeClassObj.getTime();
    DateFormat lFormatter = new SimpleDateFormat("d-MMM-yyyy,HH:mm:ss aaa");
    Date lNextDate = (Date)lFormatter.parse(lNextDate);
    System.out.println("output here"+lNextDate);

Что я делаю неправильно?

31
задан Wayne Werner 12 January 2016 в 21:23
поделиться

3 ответа

Я думаю, что ваш формат даты не имеет смысла. 13:00 нет. Удалите "aaa" в конце вашего формата или превратите HH в hh.

Тем не менее, у меня это работает нормально:

String testDate = "29-Apr-2010,13:00:14 PM";
DateFormat formatter = new SimpleDateFormat("d-MMM-yyyy,HH:mm:ss aaa");
Date date = formatter.parse(testDate);
System.out.println(date);

Он печатает «Thu Apr 29 13:00:14 CEST 2010».

57
ответ дан 27 November 2019 в 22:04
поделиться

Похоже, вы можете захотеть использовать что-то вроде SimpleDateFormat. http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html

Вы объявляете свой формат даты, а затем вызываете метод синтаксического анализа со своей строкой.

private static final DateFormat DF = new SimpleDateFormat(...);
Date myDate = DF.parse("1234");

И, как говорит Гийом, установите часовой пояс!

5
ответ дан 27 November 2019 в 22:04
поделиться

Вы должны установить часовой пояс в DateFormat, иначе он будет использовать значение по умолчанию один (в зависимости от настроек компьютера).

2
ответ дан 27 November 2019 в 22:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: