Mam LocalDate, który musi otrzymać pierwszy i ostatni dzień miesiąca. W jaki sposób mogę to zrobić?
na przykład. 13/2/2014
Muszę pobrać 1/2/2014
i 28/2/2014
w formatach LocalDate .
Korzystanie z trzech klas LocalDate.
Po prostu użyj withDayOfMonth
i lengthOfMonth()
:
LocalDate initial = LocalDate.of(2014, 2, 13);
LocalDate start = initial.withDayOfMonth(1);
LocalDate end = initial.withDayOfMonth(initial.lengthOfMonth());
Interfejs API został zaprojektowany do obsługi rozwiązania, które jest ściśle dopasowane do wymagań biznesowych
Jednak rozwiązania Jona są również w porządku.
źródło
YearMonth
Aby uzyskać kompletność i moim zdaniem bardziej eleganckie, zobacz użycie
YearMonth
klasy.Dla pierwszego i ostatniego dnia bieżącego miesiąca jest to:
źródło
LocalDate
with
metodą?LocalDate
instancji, aby zacząć.Odpowiedź Jona Skeetsa jest poprawna i zasłużyła na moją opinię, dodając tylko to nieco inne rozwiązanie dla kompletności:
źródło
Jeśli ktoś przyjdzie szukać pierwszego dnia poprzedniego miesiąca i ostatniego dnia poprzedniego miesiąca :
źródło
źródło
Możesz spróbować tego, aby uniknąć wskazywania niestandardowej daty i jeśli istnieje potrzeba wyświetlenia daty rozpoczęcia i zakończenia bieżącego miesiąca:
Wynik:
źródło
Spróbuj tego:
możesz znaleźć pożądane wyjście, ale musisz zadbać o parametr true / false dla metody getLastDayOfMonth
ten parametr oznacza rok przestępny
źródło
getLastDayOfMonth
- zobacz moją odpowiedź, aby uzyskać prostsze podejście.jeśli chcesz to zrobić tylko z klasą LocalDate:
źródło
Tylko tutaj, aby pokazać moją implementację rozwiązania @herman
źródło
LocalDateTime
jest dokładnie niewłaściwą klasą do użycia w tym miejscu. Odrzucasz cenne informacje o strefie / przesunięciu.Date
nie ma nic wspólnego z pytaniem i generalnie należy jej unikać.ZoneId.of("America/La_Paz")
. Dla dat dzisiejszych da ten sam wynik, ale może nie dla dat historycznych lub dat w dalszej przyszłości.