Как вы получаете часы и минуты , так 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
тоже работает.
ZonedDateTime
class, а не 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 .