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

У меня есть дата использования 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

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


person Ankit HTech    schedule 28.02.2013    source источник
comment
M - месяц, минуты - m   -  person gpasci    schedule 28.02.2013
comment
Вам нужна дата в 24-часовом и минутном формате, я прав?   -  person Rais Alam    schedule 28.02.2013


Ответы (2)


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

Дополнительную информацию о доступны различные спецификаторы формата.

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

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

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

person Jon Skeet    schedule 28.02.2013
comment
Спасибо +1 и принял ответ. Вы сэкономили мое время и дали ценные знания - person Ankit HTech; 28.02.2013
comment
Это getTimeInstance(), а не getTimeInstant(). - person Jéwôm'; 21.03.2017

использовать

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();
}
person Ram kiran    schedule 28.02.2013
comment
Затем идут 12-часовые часы без указателя am/pm, что может быть нежелательным. - person Jon Skeet; 28.02.2013