Klasa java.util.Date
Klasa java.util.Date
jest nieco przestarzała. Większość konstruktorów i metod tej klasy została zabroniona (deprecated – uznaję za zakaz). Klasa nie uwzględnia lokalizacji i stref czasowych, ani możliwości istnienia różnych kalendarzy. Ciągle jednak jest używana.
Rok – liczony od roku 1900 do roku 9999, ale podawany po odjęciu 1900, czyli od 0 do 8099.
Miesiące są oznaczane numerycznie od 0. Grudzień ma więc numer 11.
Dni miesiąca są liczone od 1
Godziny są liczone od 0 do 23.
Minuty są liczone od 0 do 59.
Sekundy są liczone do 0 do 59. Wartość 60 i 61 mogą się zdarzyć w momencie, gdy czas światowy jest korygowany o 1 sekundę przestępną.
Podane zakresy nie są weryfikowane. 32 stycznia będzie odczytane jako 1 lutego.
Konstruktory
Date()
tworzy datę bieżącąDate(long date)
– argument jest czasem w milisekundach, który upłynął od 1 stycznia 1970 r. 00:00:00 GMT. Powstaje wynikowa data
package dt02.java_util_date; import java.util.*; public class Listing002 { public static void main(String[] args) { Date now = new Date(); System.out.println("teraz: " + now); } }
teraz: Fri Sep 28 08:06:56 CEST 2018
CEST to Central European Summer Time.
package dt02.java_util_date; import java.util.*; public class Listing003 { public static void main(String[] args) { long l = System.currentTimeMillis(); System.out.println("currentTimeMillis: " + l); Date now = new Date(l); System.out.println("teraz: " + now); } }
currentTimeMillis: 1538115003351 teraz: Fri Sep 28 08:10:03 CEST 2018
Metody
Zwraca | Metoda | Opis |
---|---|---|
boolean |
after(Date when) |
Sprawdza czy ta data jest po dacie when |
boolean |
before(Date when) |
Sprawdza czy ta data jest przed datą when |
Object |
clone() |
Klonuje obiekt |
int |
compareTo(Date anotherDate) |
Porównuje tę datę z inną datą. jeśli ta data jest większa zwraca 1, jeśli są równe 0, jeśli jest mniejsza -1 |
boolean |
equals(Object obj) |
Sprawdza czy daty są równe |
Date |
Date.from(Instant instant) |
Pobiera obiekt Date z obiektu klasy Instant z pakietu util.time . Będziemy o tym mówili oddzielnie. |
long |
getTime() |
Pobiera czas z tej daty |
int |
hashCode() |
Oblicza kod mieszający dla tej daty. Z 64-bitowego longa pobierana jest prawa połowa bitów. Następnie wykonywana jest operacja alternatywy wykluczającej XOR co sprowadza wartość wynikającą do 32 bitów: (int)(this.getTime()^(this.getTime()>>>32)) |
void |
setTime(long milis) |
Ustawia datę dla czasu podanego w milisekundach liczonych od 1 stycznia 1970 r. godz. 00:00:00 GTM |
Instant |
toInstant() |
Zamienia tę datę na obiekt klasy Instant z pakietu java.time . Będziemy o tym mówili oddzielnie |
String |
toString() |
Zamienia tę datę na string |
package dt02.java_util_date; import java.time.*; import java.util.*; public class Listing004 { public static void main(String[] args) { GregorianCalendar cal = new GregorianCalendar(1952, 5, 4); long t = cal.getTimeInMillis(); System.out.println(t); Date date = new Date(); date.setTime(-554691600000L); System.out.println(date.toString()); Date today = new Date(); boolean po = today.after(date); System.out.println(po); boolean przed = today.before(date); System.out.println(przed); int b = today.compareTo(date); System.out.println(b); Date date2 = Date.from(Instant.now()); System.out.println(date2); Instant ints = date2.toInstant(); System.out.println(ints); } }
-554691600000 Wed Jun 04 00:00:00 CET 1952 true false 1 Fri Sep 28 08:17:20 CEST 2018 2018-09-28T06:17:20.774Z
Godzina różni się o 2 godziny od faktycznej. Różnicę wyjaśnimy przy omawianiu klas z pakietu java.time
.
CET to Central European Time.