2014-02-05 2 views
1

Я пытаюсь получить текущую дату с помощью класса Calender. Я запускаю свое веб-приложение на tomcat. Но я не понимаю, почему он показывает день месяца как 36. Ниже мой код.Класс Java Calender, отображающий неправильную дату

SimpleDateFormat df = new SimpleDateFormat("YYYY/MM/DD hh:mm:ss"); 
Calendar cal = Calendar.getInstance(); 
System.out.println("Current Date Time : " + df.format(cal.getTime())); 

Выход

Current Date Time : 2014/02/36 04:30:14 

Может кто-нибудь, пожалуйста, объясните, как может быть день 36?

Включает ли класс Calender системное время или сервер tomcat запускает свое собственное время?

+1

Кстати, если вы произвольно выбирая использовать косую черту, следует использовать дефис. Дефисы часто встречаются в этом году. Этот формат определяется международным стандартом [ISO 8601] (https://en.wikipedia.org/wiki/ISO_8601). –

ответ

5

Это потому, что D представляет собой День в году. Вместо этого вы должны использовать dd, который представляет День в месяце. Посмотрите на docs на разные модели и их представление.

+1

спасибо, что он отлично работает – underdog

+2

+1 для ловушки минута ошибка – SpringLearner

+1

@ShivangSarawagi Да, действительно, вам нужно прочитать документацию, связанную с этим ответом. Ваш «ГГГГ» должен быть строчным, а ваш «hh» должен быть в верхнем регистре. –

1

Похоже, что формат, который вы хотите, - это почти стандарт ISO 8601 format. Если это так, вы должны знать, что библиотека Joda-Time, которая вытесняет связанные классы java.util.Date/Calendar, по умолчанию использует ISO 8601. Поэтому нет необходимости определять форматтер, у Joda-Time уже есть один встроенный.

Новый java.time.* package в комплекте с Java 8 (и вдохновленный Joda-Time) также использует формат ISO 8601 по умолчанию.

Некоторые примеры кода с использованием Joda-Time 2.3 ...

DateTimeZone timeZone = DateTimeZone.forID("Europe/Paris"); 
DateTime dateTime_Paris = new DateTime(2014, 1, 24, 10, 0, 0, timeZone); 

// Convert to UTC/GMT. 
DateTime dateTime_UTC = dateTime_Paris.toDateTime(DateTimeZone.UTC); 

System.out.println("dateTime_Paris: " + dateTime_Paris); 
System.out.println("dateTime_UTC: " + dateTime_UTC); 

При запуске ...

dateTime_Paris: 2014-01-24T10:00:00.000+01:00 
dateTime_UTC: 2014-01-24T09:00:00.000Z 
Смежные вопросы