LocalDate

Kliknij i wspomóż mnie :)

Java

Ostatnio miałem okazję pracować z klasą LocalDate. Pozwala ona na przyjemną pracę z datami. W tym artykule zamierzam opisać działanie i zastosowanie tej klasy.

Problem

Załóżmy sytuację kiedy posiadamy dwie daty:

2018-02-11 i 1998-03-21

I chcemy uzyskać różnicę pomiędzy tymi datami w różnych jednostkach czasowych.

Oczywiście możemy wyciągnąć osobno rok, miesiąc i dzień i odejmować od siebie, ale staje się to bardzo żmudne.

Na koniec zostaje jeszcze kwestia poprawności daty. Problematyczna jest np. data 31-02-1999. Jak wiadomo nie ma 31 lutego :).

Rozwiązanie

Z pomocą przychodzi klasa LocalDate, która pozwala na pracę z datami jako obiektami.

Takie podejście pozwala operować na datach jak na obiektach, na które można odejmować dodawać i porównywać.

Poniżej znajduje się tabela z wybranymi przez mnie najważniejszymi metodami:

  • atStartOfDay() - zwraca pełną datę wraz z północą (00:00)
  • parse() - waliduje i tworzy obiekt LocalDate.
  • getDayOfMonth() - zwraca dzień liczbowo (int)
  • getMonthValue() - zwraca miesiąc liczbowo (int)
  • getYear() - zwraca rok liczbowo (int)
  • isAfter() - sprawdza czy data jest po jakiejś dacie
  • isBefore() - sprawdza czy data jest przed jakąś datą

Interpretacja daty

Aby data została poprawnie zinterpretowana musi spełniać normę ISO 8601.

ISO 8601

To znaczy musi być to poprawna data w formacie YYYY-MM-DD hh:mm:ss.

W przypadku niepowodzenia funkcja parse() wyrzuca wyjątek DateTimeParseException.

Porównywanie dat

Daty możemy porównywać za pomocą funkcji isBefore lub isAfter.

W tym przypadku wypisze się tylko Jeszcze nie ma 15 grudnia. ponieważ 12 grudnia jest wcześniej niż 15.

Różnica pomiędzy datami

Jak wcześniej wspomniałem daty można porównywać, ale dobrze by było także sprawdzić jaka jest różnica pomiędzy nimi.

Z pomocą przychodzi klasa Duration oraz jej funkcja between().

Po wykonaniu kodu wypisze się, że różnica to 3 dni albo 72 godziny albo 259200 sekund. Warto zwrócić uwagę, że potrzebne jest użycie atStartOfDay().

Dziękuję Ci za przeczytanie tego materiału 😀 Jeżeli spodobało Ci się to o czym piszę, możesz sprawdzić więcej materiałów na blogu lub udostępnić znajomym. Będzie mi bardzo miło 😊

O mnie

Jestem młodym programistą, który dumnie dzierży wiele pasji takich jak bieganie czy piwowarstwo domowe. Jedną z nich jest także programowanie i o tym właśnie zamierzam tutaj pisać.

Zobacz więcej

Najnowsze posty

Kliknij i wspomóż mnie :)

Zostańmy w kontakcie

* Wymagane
Kliknij i wspomóż mnie :)
shop
Otwórz Sklep Play

Zachęcam Cię do odwiedzenia mojej strony na Google Play store i sprawdzenia wszystkich moich aplikacji.