
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.
