Czas na nowoczesną odpowiedź.
java.time i ThreeTenABP
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("d/M/u");
String validUntil = "1/1/1990";
LocalDate validDate = LocalDate.parse(validUntil, dateFormatter);
LocalDate currentDate = LocalDate.now(ZoneId.of("Pacific/Efate"));
if (currentDate.isAfter(validDate)) {
System.out.println("Catalog is outdated");
}
Kiedy właśnie uruchomiłem ten kod, wynik wyglądał następująco:
Katalog jest nieaktualny
Ponieważ nigdy nie jest to ta sama data we wszystkich strefach czasowych, podaj wyraźną strefę czasową na LocalDate.now
. Jeśli chcesz, aby katalog wygasał w tym samym czasie we wszystkich strefach czasowych, możesz podać, ZoneOffset.UTC
o ile poinformujesz użytkowników, że korzystasz z UTC.
Używam java.time, nowoczesnego API daty i czasu Java. Klasy data-czas, że używany Calendar
, SimpleDateFormat
i Date
, są źle zaprojektowane i na szczęście dawno nieaktualne. Również pomimo nazwy a Date
nie oznacza daty, ale punkt w czasie. Jedną z konsekwencji tego jest: chociaż dzisiaj jest 15 lutego 2019 r., Nowo utworzony Date
obiekt jest już po (a więc nie równy) Date
obiektowi z parsowania 15/02/2019
. To dezorientuje niektórych. W przeciwieństwie do tego współczesna LocalDate
data to data bez pory dnia (i bez strefy czasowej), więc dwie LocalDate
s reprezentujące dzisiejszą datę zawsze będą równe.
Pytanie: Czy mogę używać java.time na Androidzie?
Tak, java.time działa dobrze na starszych i nowszych urządzeniach z Androidem. Wymaga tylko co najmniej Javy 6 .
- W Javie 8 i nowszych oraz na nowszych urządzeniach z Androidem (od poziomu API 26) wbudowane jest nowoczesne API.
- W Javie 6 i 7 pobierz ThreeTen Backport, zaplecze nowoczesnych klas (ThreeTen dla JSR 310; patrz linki na dole).
- Na (starszym) systemie Android użyj wersji ThreeTen Backport na Androida. Nazywa się ThreeTenABP. I upewnij się, że importujesz klasy daty i godziny
org.threeten.bp
z podpakietami.
Spinki do mankietów
Calendar
,SimpleDateFormat
,Date
lub którykolwiek z pozostałych długich przestarzałych klas daty i czasu Java. Zamiast tego użyjjava.time
nowoczesnego API daty i czasu Java . Tak, możesz go używać na Androidzie. W przypadku starszego Androida zobacz Jak używać ThreeTenABP w Android Project .