2010-07-15 3 views
1

формат даты анализирует значение 12-го часа (hh) до 00 при применении формата как «yyyy-MM-dd'Thh: mm: ss», но это не анализирует 13-й час до 1 часа ночи. PFB - образец кода.формат даты анализирует значение 12-го часа (hh) до 00

Дата testDate = DateUtil.parse ("yyyy-MM-dd'T'hh: mm: ss", "2010-07-09T12: 50: 58"); не могли бы вы сообщить мне, почему это происходит так ....?

+0

Вы используете JCalendar? Может быть полезно упомянуть об этом. – Cambium

+0

Что такое 'DateUtil'? Не стандартная Java, Apache commons? –

ответ

6

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

См. javadoc for SimpleDateFormat.

EDIT: Обратите внимание, что проблема может быть и на другом конце. Чтобы получить час от java.util.Date, вы можете установить его на объекте Calendar и позвонить по телефону get(Calendar.HOUR_OF_DAY). Обратите внимание, что get(Calendar.HOUR) предоставит вам 12-часовой, а не 24-часовой.

+0

Если «hh для 12-часовых часов, то почему он не конвертирует 13, 14 в 1,2 PM соответственно? –

+0

Поскольку 13 и 14 являются недопустимыми элементами для 12-часового значения часов. –

+0

Спасибо, Саймон, но этот метод не будет генерировать исключение для недопустимых входов, например, 13 amd 14. Поскольку я новичок в java, вы можете объяснить немного больше ... –

0
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

Привет, На самом деле, я использую приведенный ниже фрагмент кода. Здесь объект даты не используется, также в моем случае вывод DateUtil.parse (date_format, dateInput1) сравнивается с выходом DateUtil.parse (date_format , dateinput2) import java.text.ParseException; import java.util.Date; public class Smallh {public static void main (String [] args) {try {Date testDate = DateUtil.parse ("yyyy-MM-dd'T'hh: mm: ss", "2010-07-09T01: 50: 58 «); System.out.println ("***" + testDate); } catch (ParseException e) {e.printStackTrace(); }}} –

+0

Почему вы не можете использовать SimpleDateFormat? – Cambium

0

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

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

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)); 
} 
Смежные вопросы