Jak można uzyskać godziny i minuty od Date.getHours
i Date.getMinutes
got przestarzałe? Przykłady, które znalazłem w wyszukiwarce Google, wykorzystywały przestarzałe metody.
Jak można uzyskać godziny i minuty od Date.getHours
i Date.getMinutes
got przestarzałe? Przykłady, które znalazłem w wyszukiwarce Google, wykorzystywały przestarzałe metody.
Odpowiedzi:
Spróbuj użyć Joda Time zamiast standardowych klas java.util.Date. Biblioteka Joda Time ma znacznie lepsze API do obsługi dat.
DateTime dt = new DateTime(); // current time
int month = dt.getMonth(); // gets the current month
int hours = dt.getHourOfDay(); // gets hour of day
Zobacz to pytanie, aby poznać zalety i wady korzystania z biblioteki Joda Time.
Joda Time może być również dołączony do niektórych przyszłych wersji Java jako standardowy komponent, patrz JSR-310 .
Jeśli musisz używać tradycyjnych klas java.util.Date i java.util.Calendar, zapoznaj się z ich dokumentami JavaDoc ( java.util.Calendar i java.util.Date ).
Możesz użyć tradycyjnych klas, takich jak ta, aby pobrać pola z danej instancji 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!
Z Javadoc dla Date.getHours
As of JDK version 1.1, replaced by Calendar.get(Calendar.HOUR_OF_DAY)
Więc użyj
Calendar rightNow = Calendar.getInstance();
int hour = rightNow.get(Calendar.HOUR_OF_DAY);
i odpowiednik dla getMinutes.
ZonedDateTime
zamiast tego.
Chociaż jestem fanem Joda-Time , Java 8 wprowadza pakiet java.time , który jest wreszcie wartościowym standardowym rozwiązaniem Java! Przeczytaj ten artykuł, Java SE 8 Date and Time , aby uzyskać dużo informacji na temat java.time poza godzinami i minutami.
W szczególności spójrz na LocalDateTime
klasę.
Godziny i minuty:
LocalDateTime.now().getHour();
LocalDateTime.now().getMinute();
LocalDateTime.now(ZoneId.of("Asia/Manilla"))
. Czytaj now()
tylko raz, aby zachować spójność (między dwoma wywołaniami upłynie czas). Jeśli data jest naprawdę nieistotna, LocalTime
też działa.
ZonedDateTime
klasy zamiast LocalDateTime
. Dzięki LocalDateTime
Tobie bez powodu odrzucasz cenne informacje o strefie czasowej, nic nie zyskując.
ZonedDateTime.now().getHour()
… Lub…
LocalTime.now().getHour()
ZonedDateTime
Odpowiedz przez JD jest dobra, ale nie optymalne. Ta odpowiedź używa LocalDateTime
klasy. Bez jakiejkolwiek koncepcji strefy czasowej lub przesunięcia w stosunku do UTC, ta klasa nie może reprezentować momentu.
Lepiej używać ZonedDateTime
.
ZoneId z = ZoneID.of( "America/Montreal" ) ;
ZonedDateTime zdt = ZonedDateTime.now( z ) ;
Jeśli pominiesz ZoneId
argument, zostanie on zastosowany niejawnie w czasie wykonywania przy użyciu bieżącej domyślnej strefy czasowej maszyny JVM.
Więc to:
ZonedDateTime.now()
… Jest taki sam jak ten:
ZonedDateTime.now( ZoneId.systemDefault() )
Lepiej jest podać konkretną / oczekiwaną strefę czasową. Wartość domyślna może ulec zmianie w dowolnym momencie podczas działania.
Jeśli jest to krytyczne, potwierdź strefę czasową z użytkownikiem.
Zapytaj ZonedDateTime
o godzinę i minutę.
int hour = zdt.getHour() ;
int minute = zdt.getMinute() ;
LocalTime
Jeśli chcesz podać tylko porę dnia bez strefy czasowej, wyodrębnij LocalTime
.
LocalTime lt = zdt.toLocalTime() ;
Lub ZonedDateTime
całkowicie pomiń , przechodząc bezpośrednio do 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).
Struktura java.time jest wbudowana w Javę 8 i nowsze. Klasy te kłopotliwe zastąpić stary starszych klas Date-Time, takich jak java.util.Date
, Calendar
, i SimpleDateFormat
.
Aby dowiedzieć się więcej, zobacz samouczek Oracle . I przeszukaj Stack Overflow, aby znaleźć wiele przykładów i wyjaśnień. Specyfikacja to JSR 310 .
Projekt Joda-Time , obecnie w trybie konserwacji , zaleca migrację do klas java.time .
Możesz wymieniać obiekty java.time bezpośrednio ze swoją bazą danych. Użyj sterownika JDBC zgodnego z JDBC 4.2 lub nowszym. Nie ma potrzeby stosowania ciągów ani java.sql.*
klas.
Skąd wziąć klasy java.time?
Projekt ThreeTen-Extra rozszerza java.time o dodatkowe klasy. Ten projekt jest poligonem doświadczalnym dla ewentualnych przyszłych dodatków do java.time. Można znaleźć kilka przydatnych klas tutaj takie jak Interval
, YearWeek
, YearQuarter
, i więcej .
Wypróbuj Calender. Użyj getInstance, aby uzyskać obiekt kalendarza. Następnie użyj setTime, aby ustawić wymaganą datę. Teraz możesz użyć get (pole int) z odpowiednią stałą, taką jak HOUR_OF_DAY lub coś podobnego, aby odczytać potrzebne wartości.
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();
Te funkcje będą zwracać wartości int w godzinach i minutach.
java.sql.Time
? Z pewnością nie ma żadnego powodu, aby wprowadzać do gry tę przestarzałą klasę, kiedy już masz java.time.LocalTime
. Zbytnie komplikujesz.
getMinutes()
że został wycofany w (używam Java 1.8) i został zastąpiony przezCalendar.get(Calendar.MINUTE)
Jeszcze jednym sposobem uzyskiwania minut i godzin jest użycie 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
i java.text.SimpleDateFormat
są teraz starsze , zastąpione przez klasy java.time wbudowane w Javę 8 i nowsze. Zobacz samouczek firmy Oracle .
Poleciłbym poszukać czasu ad joda. http://www.joda.org/joda-time/
Bałem się dodać kolejną bibliotekę do mojego grubego projektu, ale jest to po prostu łatwe, szybkie, inteligentne i niesamowite. Ponadto do pewnego stopnia dobrze współgra z istniejącym kodem.
Chociaż nie polecałbym tego robić, myślę, że warto zauważyć, że chociaż wiele metod w java.util.Date zostało przestarzałych, nadal działają. W trywialnych sytuacjach ich użycie może być w porządku. Ponadto java.util.Calendar działa dość wolno, więc getMonth i getYear on Date mogą być pożyteczne szybciej.
import java.util.*
Możesz uzyskać godziny i minuty, używając kalendarza i klasy formatera. Calendar cal = Calendar.getInstance()
i Formatter fmt=new Formatter()
ustawić format wyświetlania godzin i minut fmt.format("%tl:%M",cal,cal)
oraz wydruków System.out.println(fmt)
, takich jak10:12
java.util.Date
,java.util.Calendar
ijava.text.SimpleDateFormat
są teraz starsze , zastąpione przez klasy java.time wbudowane w Javę 8 i nowsze. Zobacz samouczek firmy Oracle .