Як ви отримуєте Години та Хвилини з тих пір Date.getHoursі Date.getMinutesзастаріли? У прикладах, які я знайшов у пошуку Google, використовувались застарілі методи.
Як ви отримуєте Години та Хвилини з тих пір Date.getHoursі Date.getMinutesзастаріли? У прикладах, які я знайшов у пошуку Google, використовувались застарілі методи.
Відповіді:
Спробуйте використовувати Joda Time замість стандартних класів java.util.Date. Бібліотека часу Joda має набагато кращий 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 , щоб отримати велику кількість інформації про java.time поза годин і хвилин.
Зокрема, подивіться на LocalDateTimeклас.
Години і хвилини:
LocalDateTime.now().getHour();
LocalDateTime.now().getMinute();
LocalDateTime.now(ZoneId.of("Asia/Manilla")). Прочитайте now()лише один раз для узгодженості (пройде час між двома дзвінками). Якщо дата справді не має значення, LocalTimeтеж працює.
ZonedDateTimeскоріше використовуйте клас 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 . І шукайте переповнення стека за багатьма прикладами та поясненнями. Специфікація - 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, і більш .
Спробуйте каландр. Використовуйте getInstance, щоб отримати об'єкт календаря. Потім використовуйте setTime, щоб встановити необхідну дату. Тепер ви можете використовувати get (int поле) з відповідною константою, наприклад 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 .
Я рекомендую переглянути час joda ad. http://www.joda.org/joda-time/
Я побоювався додати ще одну бібліотеку до свого товстого проекту, але це просто легко і швидко, розумно і приголомшливо. Плюс до певної міри це добре грає з існуючим кодом.
Хоча я б не рекомендував це робити, я думаю, що варто зазначити, що хоча багато методів на java.util.Date застаріли, вони все ще працюють. У тривіальних ситуаціях може бути нормально їх використовувати. Крім того, java.util.Calendar є досить повільним, тому getMonth та getYear на 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 .