Java: getMinutes и getHours - PullRequest
122 голосов
/ 25 мая 2009

Как вы получаете Часы и Минуты, так как Date.getHours и Date.getMinutes устарели? В примерах, которые я нашел в поиске Google, использовались устаревшие методы.

Ответы [ 12 ]

161 голосов
/ 25 мая 2009

Попробуйте использовать Joda Time вместо стандартных классов java.util.Date. Библиотека Joda Time имеет гораздо лучший API для обработки дат.

DateTime dt = new DateTime();  // current time
int month = dt.getMonth();     // gets the current month
int hours = dt.getHourOfDay(); // gets hour of day

См. Этот вопрос о плюсах и минусах использования библиотеки Joda Time.

Joda Time также может быть включен в будущую версию Java в качестве стандартного компонента, см. JSR-310 .


Если вам необходимо использовать традиционные классы java.util.Date и java.util.Calendar, обратитесь к справке по их JavaDoc ( java.util.Calendar и java.util.Date ).

Вы можете использовать традиционные классы, подобные этим, для извлечения полей из данного экземпляра Date.

Date date = new Date();   // given date
Calendar calendar = GregorianCalendar.getInstance(); // creates a new calendar instance
calendar.setTime(date);   // assigns calendar to given date 
calendar.get(Calendar.HOUR_OF_DAY); // gets hour in 24h format
calendar.get(Calendar.HOUR);        // gets hour in 12h format
calendar.get(Calendar.MONTH);       // gets month number, NOTE this is zero based!
83 голосов
/ 25 мая 2009

Из Javadoc для Date.getHours

As of JDK version 1.1, replaced by Calendar.get(Calendar.HOUR_OF_DAY)

Так что используйте

Calendar rightNow = Calendar.getInstance();
int hour = rightNow.get(Calendar.HOUR_OF_DAY);

и эквивалент для getMinutes.

47 голосов
/ 26 марта 2015

java.time

Пока я фанат Joda-Time , Java 8 представляет пакет java.time , который, наконец, является достойным стандартным решением Java! Прочтите эту статью, Java SE 8 Дата и время , для получения большого количества информации о java.time вне часов и минут.

В частности, посмотрите на класс LocalDateTime.

Часы и минуты:

LocalDateTime.now().getHour();
LocalDateTime.now().getMinute();
34 голосов
/ 25 мая 2009

Сначала импортируйте java.util.Calendar

Calendar now = Calendar.getInstance();
System.out.println(now.get(Calendar.HOUR_OF_DAY) + ":" + now.get(Calendar.MINUTE));
6 голосов
/ 25 мая 2009

Попробуйте календарь. Используйте getInstance, чтобы получить Calender-Object. Затем используйте setTime, чтобы установить требуемую дату. Теперь вы можете использовать get (int field) с соответствующей константой, такой как HOUR_OF_DAY или около того, чтобы прочитать нужные значения.

http://java.sun.com/javase/6/docs/api/java/util/Calendar.html

4 голосов
/ 20 марта 2019

ТЛ; др

ZonedDateTime.now().getHour()

… или…

LocalTime.now().getHour() 

ZonedDateTime

Ответ от J.D. хорош, но не оптимален. Этот ответ использует класс LocalDateTime. В отсутствие какой-либо концепции часового пояса или смещения от UTC этот класс не может представлять момент.

Лучше использовать ZonedDateTime.

ZoneId z = ZoneID.of( "America/Montreal" ) ;
ZonedDateTime zdt = ZonedDateTime.now( z ) ;

Укажите часовой пояс

Если вы пропустите аргумент ZoneId, он будет применен неявно во время выполнения с использованием текущего часового пояса JVM по умолчанию.

Итак, это:

ZonedDateTime.now()

… то же самое, что и это:

ZonedDateTime.now( ZoneId.systemDefault() )

Лучше быть явным, передавая желаемый / ожидаемый часовой пояс. Значение по умолчанию может меняться в любой момент во время выполнения.

Если критично, подтвердите часовой пояс с пользователем.

час минут

Опрос ZonedDateTime по часам и минутам.

int hour = zdt.getHour() ;
int minute = zdt.getMinute() ;

LocalTime

Если вы хотите указать только время суток без часового пояса, извлеките LocalTime.

LocalTime lt = zdt.toLocalTime() ;

Или пропустить ZonedDateTime полностью, перейдя непосредственно к LocalTime.

LocalTime lt = LocalTime.now( z ) ;  // Capture the current time-of-day as seen in the wall-clock time used by the people of a particular region (a time zone).

java.time типов

Table of types of date-time classes in modern java.time versus legacy.


About java.time

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

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

Проект Joda-Time , теперь в режиме обслуживания , рекомендует выполнить переход на классы java.time .

Вы можете обмениваться java.time объектами напрямую с вашей базой данных. Используйте драйвер JDBC , совместимый с JDBC 4.2 или более поздней версии. Нет необходимости в строках, нет необходимости в java.sql.* классах.

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

Проект ThreeTen-Extra расширяет java.time дополнительными классами. Этот проект является полигоном для возможных будущих дополнений к java.time. Здесь вы можете найти некоторые полезные классы, такие как Interval, YearWeek, YearQuarter и more .

3 голосов
/ 13 января 2017
int hr=Time.valueOf(LocalTime.now()).getHours();
int minutes=Time.valueOf(LocalTime.now()).getMinutes();

Эти функции будут возвращать значения int в часах и минутах.

2 голосов
/ 19 марта 2019

Еще один способ получить минуты и часы - использовать SimpleDateFormat.

SimpleDateFormat formatMinutes = new SimpleDateFormat("mm")
String getMinutes = formatMinutes.format(new Date())

SimpleDateFormat formatHours = new SimpleDateFormat("HH")
String getHours = formatHours.format(new Date())
2 голосов
/ 25 мая 2009

Я бы порекомендовал посмотреть ad joda time. http://www.joda.org/joda-time/

Я боялся добавить еще одну библиотеку в свой толстый проект, но это просто, быстро, умно и круто. Кроме того, он в некоторой степени хорошо работает с существующим кодом.

1 голос
/ 06 июня 2017
public static LocalTime time() {
    LocalTime ldt = java.time.LocalTime.now();

    ldt = ldt.truncatedTo(ChronoUnit.MINUTES);
    System.out.println(ldt);
    return ldt;
}

Это работает для меня

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...