Я пытаюсь установить календарный час и минуту, используя следующий кодКалендарь Время Не настройка
Calendar c=Calendar.getInstance();
c.set(Calendar.HOUR,4);
c.set(Calendar.MINUTE, 23);
но всегда отображать 11, как час и 12 минут, как.
Я пытаюсь установить календарный час и минуту, используя следующий кодКалендарь Время Не настройка
Calendar c=Calendar.getInstance();
c.set(Calendar.HOUR,4);
c.set(Calendar.MINUTE, 23);
но всегда отображать 11, как час и 12 минут, как.
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 классов.
Возможно, вам нужна текущая дата в определенное время суток.
Вы игнорируете решающую проблему часового пояса. Часовое время имеет решающее значение для определения даты. В любой данный момент дата изменяется по всему миру по зонам. Например, через несколько минут после полуночи в 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 8 и более поздних версий. Эти классы вытесняют неприятные старые legacy классы времени, такие как java.util.Date
, Calendar
, & SimpleDateFormat
.
Проект Joda-Time, в настоящее время в maintenance mode, советует перейти на классы java.time.
Чтобы узнать больше, см. Oracle Tutorial. И поиск Stack Overflow для многих примеров и объяснений. Спецификация: JSR 310.
Где получить классы java.time?
Что это значит, он отображает? Когда вы наводите указатель мыши на 'Calendar.HOUR' и' Calendar.MINUTE'? – joao2fast4u
Где вы показываете его в своем коде? – Keshav1234
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). –