формат даты анализирует значение 12-го часа (чч) до 00 - PullRequest
3 голосов
/ 15 июля 2010

формат даты анализирует значение 12-го часа (чч) до 00, применяя формат как «гггг-мм-дд'т'чч: мм: сс», но не анализирует 13-й час до 13:00.PFB образец кода.

Date testDate = DateUtil.parse("yyyy-MM-dd'T'hh:mm:ss", "2010-07-09T12:50:58");

Можете ли вы дать мне знать, почему это так конвертируется?

Ответы [ 3 ]

8 голосов
/ 15 июля 2010

Вы должны использовать HH вместо hh.Первый предназначен для 24-часовых часов, второй для 12-часовых.

См. Javadoc для SimpleDateFormat .

РЕДАКТИРОВАТЬ Обратите внимание, что проблема может быть и на другом конце.Чтобы получить час от java.util.Date, вы можете установить его для объекта Calendar и вызвать get(Calendar.HOUR_OF_DAY).Обратите внимание, что get(Calendar.HOUR) даст вам 12-часовой, а не 24-часовой.

1 голос
/ 15 июля 2010
    DateFormat inputFormatter = new SimpleDateFormat(
            "yyyy-MM-dd'T'hh:mm:ss");
    Date date = inputFormatter.parse("2010-07-09T13:50:58");
    DateFormat outputFormatter = new SimpleDateFormat(
            "yyyy-MM-dd'T'hh:mm:ss a");
    System.out.println(outputFormatter.format(date));

Вывод:

2010-07-09T01:50:58 PM

Показывает 13 штрафа и выводит 01 (PM).

0 голосов
/ 04 августа 2015

Когда вы читаете время с часовым поясом и печатаете с вашим языковым стандартом, система преобразует время в ваше местное в Уругвае.

Вам необходимо создать календарь с пользовательским языковым стандартом и часовым поясом, чтобы обеспечить его согласованность:

    public static void main(String[] args) throws ParseException {
    String dateStr = "Tue, 04 Aug 2015 12:09:10 GMT";
    SimpleDateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.ENGLISH);
    Date d = format.parse(dateStr);
    System.out.println("The current time is: " + d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds());
    Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("GMT"), Locale.ENGLISH);
    cal.setTime(d);
    System.out.println("The current time is: " + cal.get(Calendar.HOUR_OF_DAY) + ":" + cal.get(Calendar.MINUTE) + ":" + cal.get(Calendar.SECOND));
}
...