Как вы получаете часы и минуты , так Date.getHoursи Date.getMinutesполучил осуждается? В примерах, которые я нашел в поиске Google, использовались устаревшие методы.
Как вы получаете часы и минуты , так Date.getHoursи Date.getMinutesполучил осуждается? В примерах, которые я нашел в поиске Google, использовались устаревшие методы.
Ответы:
Попробуйте использовать 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!
Из 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.
ZonedDateTimeвместо него.
Хотя я являюсь поклонником Joda-Time , в Java 8 представлен пакет java.time , который, наконец, стал стоящим стандартным решением Java! Прочтите эту статью, Java SE 8 Date and Time , чтобы получить хорошее количество информации о java.time за пределами часов и минут.
В частности, посмотрите на LocalDateTimeкласс.
Часы и минуты:
LocalDateTime.now().getHour();
LocalDateTime.now().getMinute();
LocalDateTime.now(ZoneId.of("Asia/Manilla")). Прочтите now()только один раз для единообразия (между двумя вызовами пройдет время). Если дата действительно неактуальна, LocalTimeтоже работает.
ZonedDateTimeclass, а не LocalDateTime. С LocalDateTimeвы отбрасываете ценную информацию о часовом поясе без причины, ничего не получая.
ZonedDateTime.now().getHour()
… или …
LocalTime.now().getHour()
ZonedDateTimeОтвета на этот вопрос JD хорошо , но не является оптимальным. В этом ответе используется 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 каркас встроен в Java 8 и более поздних версий. Эти классы вытеснять неприятные старые устаревшие классы даты и времени , такие как java.util.Date, Calendar, и SimpleDateFormat.
Чтобы узнать больше, см. Oracle Tutorial . И поищите в Stack Overflow множество примеров и объяснений. Спецификация - 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, и более .
Попробуйте Calender. Используйте getInstance, чтобы получить объект календаря. Затем используйте setTime, чтобы установить требуемую дату. Теперь вы можете использовать get (int field) с соответствующей константой, например HOUR_OF_DAY или около того, чтобы прочитать нужные вам значения.
http://java.sun.com/javase/6/docs/api/java/util/Calendar.html
int hr=Time.valueOf(LocalTime.now()).getHours();
int minutes=Time.valueOf(LocalTime.now()).getMinutes();
Эти функции возвращают значения типа int в часах и минутах.
java.sql.Time? Конечно, нет никаких причин вводить в игру этот устаревший класс, когда он у вас есть java.time.LocalTime. Вы слишком усложняете.
getMinutes(), он устарел (я использую java 1.8) и был заменен наCalendar.get(Calendar.MINUTE)
Еще один способ получить минуты и часы - использовать SimpleDateFormat.
SimpleDateFormat formatMinutes = new SimpleDateFormat("mm")
String getMinutes = formatMinutes.format(new Date())
SimpleDateFormat formatHours = new SimpleDateFormat("HH")
String getHours = formatHours.format(new Date())
java.util.Date, java.util.Calendarи java.text.SimpleDateFormat, теперь унаследованы , вытеснены классами java.time, встроенными в Java 8 и более поздних версий . См. Учебник Oracle .
Я бы рекомендовал посмотреть ad joda time. http://www.joda.org/joda-time/
Я боялся добавить еще одну библиотеку в свой толстый проект, но это просто, быстро, умно и круто. Кроме того, в некоторой степени он хорошо сочетается с существующим кодом.
Хотя я бы не рекомендовал это делать, я думаю, стоит отметить, что, хотя многие методы в java.util.Date устарели, они все еще работают. В тривиальных ситуациях их можно использовать. Кроме того, java.util.Calendar работает довольно медленно, поэтому getMonth и getYear on Date могут быть более быстрыми.
import java.util.*Вы можете узнать часы и минуты, используя календарь и класс форматирования. Calendar cal = Calendar.getInstance()и Formatter fmt=new Formatter()установите формат отображения часов и минут, fmt.format("%tl:%M",cal,cal)и System.out.println(fmt) вывод на печать будет выглядеть как10:12
java.util.Date,java.util.Calendarиjava.text.SimpleDateFormat, теперь унаследованы , вытеснены классами java.time, встроенными в Java 8 и более поздних версий . См. Учебник Oracle .