Получить первый и последний день месяца с помощью Threeten, LocalDate

У меня есть LocalDate, который должен получить первый и последний день месяца. Как мне это сделать?

например. 13/2/2014 Мне нужно получить 1/2/2014 и 28/2/2014 в форматах LocalDate.

Использование трех классов LocalDate.

73 голоса | спросил user1746050 6 MarpmThu, 06 Mar 2014 15:55:49 +04002014-03-06T15:55:49+04:0003 2014, 15:55:49

6 ответов


0

Просто используйте withDayOfMonth и lengthOfMonth():

LocalDate initial = LocalDate.of(2014, 2, 13);
LocalDate start = initial.withDayOfMonth(1);
LocalDate end = initial.withDayOfMonth(initial.lengthOfMonth());
ответил Jon Skeet 6 MarpmThu, 06 Mar 2014 16:00:36 +04002014-03-06T16:00:36+04:0004 2014, 16:00:36
0

API был разработан для поддержки решения, которое близко соответствует бизнес-требованиям

import static java.time.temporal.TemporalAdjusters.*;

LocalDate initial = LocalDate.of(2014, 2, 13);
LocalDate start = initial.with(firstDayOfMonth());
LocalDate end = initial.with(lastDayOfMonth());

Однако решения Джона тоже хороши.

ответил JodaStephen 7 MaramFri, 07 Mar 2014 05:47:37 +04002014-03-07T05:47:37+04:0005 2014, 05:47:37
0

YearMonth

Для полноты и, на мой взгляд, более элегантно, посмотрите использование YearMonth class.

YearMonth month = YearMonth.from(date);
LocalDate start = month.atDay(1);
LocalDate end   = month.atEndOfMonth();
ответил herman 18 PMpWed, 18 Apr 2018 12:21:55 +030021Wednesday 2018, 12:21:55
0

Ответ Джона Скитса правильный и заслужил мое одобрение, просто добавив это немного другое решение для полноты:

import static java.time.temporal.TemporalAdjusters.lastDayOfMonth;

LocalDate initial = LocalDate.of(2014, 2, 13);
LocalDate start = initial.withDayOfMonth(1);
LocalDate end = initial.with(lastDayOfMonth());
ответил Meno Hochschild 6 MarpmThu, 06 Mar 2014 18:22:07 +04002014-03-06T18:22:07+04:0006 2014, 18:22:07
0

Попробуйте это:

LocalDate initial = LocalDate.of(2014, 2, 13);
LocalDate start = initial.withDayOfMonth(1);         
LocalDate end = initial.withDayOfMonth(initial.getMonthOfYear().getLastDayOfMonth(false));
System.out.println(start);
System.out.println(end);

вы можете найти желаемый результат, но нужно позаботиться о параметре true /false для метода getLastDayOfMonth

этот параметр обозначает високосный год

ответил Shekhar Rajput 6 MarpmThu, 06 Mar 2014 16:46:34 +04002014-03-06T16:46:34+04:0004 2014, 16:46:34
0

Если кто-то ищет первый день предыдущего месяца и последний день предыдущего месяца :

 public static LocalDate firstDayOfPreviousMonth(LocalDate date) {
        return date.minusMonths(1).withDayOfMonth(1);
    }


public static LocalDate lastDayOfPreviousMonth(LocalDate date) {
        return date.withDayOfMonth(1).minusDays(1);
    }
ответил Anil Bhaskar 27 ThuEurope/Moscow2018-12-27T19:39:40+03:00Europe/Moscow12bEurope/MoscowThu, 27 Dec 2018 19:39:40 +0300 2018, 19:39:40

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132