2015-04-18 8 views
0

Я пытаюсь установить календарный час и минуту, используя следующий кодКалендарь Время Не настройка

Calendar c=Calendar.getInstance(); 
c.set(Calendar.HOUR,4); 
c.set(Calendar.MINUTE, 23); 

но всегда отображать 11, как час и 12 минут, как.

+0

Что это значит, он отображает? Когда вы наводите указатель мыши на 'Calendar.HOUR' и' Calendar.MINUTE'? – joao2fast4u

+0

Где вы показываете его в своем коде? – Keshav1234

+0

FYI, неприятные старые классы времени, такие как ['java.util.Date'] (https://docs.oracle.com/javase/9/docs/api/java/util/Date.html), [ 'java.util.Calendar'] (https://docs.oracle.com/javase/9/docs/api/java/util/Calendar.html) и' java.text.SimpleDateFormat' теперь [наследие] (https://en.wikipedia.org/wiki/Legacy_system), вытесненный [java.time] (https://docs.oracle.com/javase/9/docs/api/java/time/package-summary. html), встроенные в Java 8 и Java 9. См. [Учебное пособие по Oracle] (https://docs.oracle.com/javase/tutorial/datetime/TOC.html). –

ответ

0

Т.Л., д-р

ZonedDateTime.of(          // Represent a moment on the timeline adjusted into a particular time zone. 
    LocalDate.now(ZoneId.of("Pacific/Auckland") ) , // Capture the current date for a particular time zone. 
    LocalTime.of(4 , 23) ,        // Hard-code the time-of-day value desired. Will be adjusted as needed to handle anomalies such as DST. 
    ZoneId.of("Pacific/Auckland")      // Apply a particular time zone to this date-time. 
) 

java.time

Вы используете хлопотно старые классы даты и времени, которые в настоящее время наследие, вытеснен java.time классов.

Возможно, вам нужна текущая дата в определенное время суток.

Вы игнорируете решающую проблему часового пояса. Часовое время имеет решающее значение для определения даты. В любой данный момент дата изменяется по всему миру по зонам. Например, через несколько минут после полуночи в Paris France - это новый день, пока еще «вчера» в Montréal Québec.

Если часовой пояс не указан, JVM неявно применяет текущий часовой пояс по умолчанию. Это значение по умолчанию может измениться в любой момент, поэтому ваши результаты могут отличаться. Лучше указывать желаемый/ожидаемый часовой пояс явно как аргумент.

Указать proper time zone name в формате continent/region, такие как America/Montreal, Africa/Casablanca или Pacific/Auckland. Никогда не используйте аббревиатуру 3-4 буквы, такую ​​как EST или IST, так как они не истинные часовые пояса, не стандартизированные, и даже не уникальные (!).

ZoneId z = ZoneId.of("America/Montreal") ; 

Если вы хотите использовать текущий часовой пояс JVM, запросите его и передайте в качестве аргумента. Если этот параметр опущен, текущее значение JVM применяется неявно. Лучше быть явным.

ZoneId z = ZoneId.systemDefault() ; // Get JVM’s current default time zone. 

Определение текущей текущей даты для определенного часового пояса.

LocalDate today = LocalDate.now(z) ; 

Представьте свое целевое время суток.

LocalTime lt = LocalTime.of(4 , 23) ; 

Объединение с зоной для получения ZonedDateTime. Если ваше текущее время не действует для этой даты в этой зоне из-за аномалий, таких как летнее время (DST), класс автоматически корректирует время.

ZonedDateTime zdt = ZonedDateTime.of(today , lt , z) ; 

О java.time

java.time каркас встроен в Java 8 и более поздних версий. Эти классы вытесняют неприятные старые legacy классы времени, такие как java.util.Date, Calendar, & SimpleDateFormat.

Проект Joda-Time, в настоящее время в maintenance mode, советует перейти на классы java.time.

Чтобы узнать больше, см. Oracle Tutorial. И поиск Stack Overflow для многих примеров и объяснений. Спецификация: JSR 310.

Где получить классы java.time?

  • Java SE 8, Java SE 9, а затем
    • Встроенный.
    • Часть стандартного Java API с объединенной реализацией.
    • Java 9 добавляет некоторые незначительные функции и исправления.
  • Java SE 6 и Java SE 7
    • Большая часть функциональности java.time будет обратно портирован на Java 6 & 7 в ThreeTen-Backport.
  • Android
    • Более поздние версии Android реализаций пачке классов java.time.
    • Для более ранних Android, проект ThreeTenABP адаптируется ThreeTen-Backport (упомянутый выше). См. How to use ThreeTenABP….