Wpis z mikrobloga

Java 8. Sytuacja wymaga użycia java.util.Date:

Date testDate = new Date(2017,9,19);
System.out.println(testDate);
System.out.println(testDate.getYear());

Do konsoli trafia kolejno:
Fri Oct 19 00:00:00 CEST 3917
2017

Skąd się bierze to 3917? Wiem, że ten konstruktor i metoda jest depricated ale co to za głupota? Dlaczego w konstruktorze od pierwszego argumentu mam odejmować 1900, a do wartości zwracanej przez metodę dodawać? Kto to wymyślił?

Przez to metoda format z Groovy zwraca głupotę.

#java #groovy #naukaprogramowania
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@TomaszWKS: Czytaj dokumentację. java.util.Date jest p------e i nie powinno się go stosować chyba że naprawdę nie ma innej opcji.

Parameters:

year - the year minus 1900.

month - the month between 0-11.

date - the day of the month between 1-31.
  • Odpowiedz
@TomaszWKS: Skoro napisałeś, to czemu pytasz o przyczyny tego, że działa jak w dokumentacji?
Wiesz że jest deprecated, ale i tak używasz i narzekasz że działa jak w dokumentacji? Tak to trochę brzmi.
  • Odpowiedz
@TomaszWKS: W Javie 8 zostało pakiet java.util.Date został poprawiony i nie trzeba kombinować z np. joda-time. Sam widzisz że konstruktor jest Depricated (zostawiono go żeby zachować kompatybilność wsteczną), korzystaj z innego.
  • Odpowiedz