Часы и минуты от даты в 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();
}