Часы и минуты от даты в Android

У меня дата использования Java как Thu Feb 28 15:35:00 GMT+00:00 2013

Как конвертировать в HH:MM,

Я пытаюсь сделать это с помощью приведенного ниже фрагмента:

SimpleDateFormat formatter = new SimpleDateFormat("HH:MM");
        formatter.setTimeZone(TimeZone.getTimeZone("GMT"));
        return formatter.format(objDate);

Это дает правильный результат для dd mmm но всегда дает минуты как 02 для HH:MM

Подскажите пожалуйста что не так в этой функции?

2 ответа

Решение

MM значение месяца в SimpleDateFormat, Ты хочешь mm, Обратите внимание, что с помощью HH даст вам 24-часовые часы (00-23)... вы можете использовать hh для 12-часовых часов (01-12), но в этом случае вам, вероятно, также понадобится обозначение am / pm.

Смотрите документацию дляSimpleDateFormat для более подробной информации о различных спецификаторах формата доступны.

Также обратите внимание, что для целей интернационализации вам может быть лучше:

DateFormat formatter = DateFormat.getTimeInstance(DateFormat.SHORT, locale);

... так что он будет использовать соответствующий "короткий формат времени" для данной локали. Это уместно, если это для демонстрации (удобочитаемости) целей; для машиночитаемых форматов можно создать собственный формат, но я бы рекомендовал явно использовать Locale.US чтобы избежать получения различных календарей и символов формата (например, разделитель времени).

Использование

String str ="Thu Feb 28 15:35:00 GMT+00:00 2013";

SimpleDateFormat formatter_from = new SimpleDateFormat("EEE MMM dd hh:mm:ss ZZ yyyy");
SimpleDateFormat formatter_to = new SimpleDateFormat("hh:mm");

try {
    java.util.Date d = formatter_from.parse(str);

    System.out.println(formatter_to.format(d));

} catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
Другие вопросы по тегам