use*_*050 99 java date java-time
我有一个LocalDate需要获得该月的第一天和最后一天.我怎么做?
例如.13/2/2014我需要以LocalDate格式获得1/2/2014和28/2/2014.
使用threeten LocalDate类.
Jon*_*eet 151
只需使用withDayOfMonth,并lengthOfMonth():
LocalDate initial = LocalDate.of(2014, 2, 13);
LocalDate start = initial.withDayOfMonth(1);
LocalDate end = initial.withDayOfMonth(initial.lengthOfMonth());
Run Code Online (Sandbox Code Playgroud)
Jod*_*hen 134
API旨在支持与业务需求紧密匹配的解决方案
import static java.time.temporal.TemporalAdjusters.*;
LocalDate initial = LocalDate.of(2014, 2, 13);
LocalDate start = initial.with(firstDayOfMonth());
LocalDate end = initial.with(lastDayOfMonth());
Run Code Online (Sandbox Code Playgroud)
但是,Jon的解决方案也很好.
her*_*man 52
YearMonth为了完整性,在我看来更优雅,请看这个YearMonth类的使用.
YearMonth month = YearMonth.from(date);
LocalDate start = month.atDay(1);
LocalDate end = month.atEndOfMonth();
Run Code Online (Sandbox Code Playgroud)
Men*_*ild 16
Jon Skeets的答案是正确的,并且值得我的upvote,只需添加这个略有不同的完整性解决方案:
import static java.time.temporal.TemporalAdjusters.lastDayOfMonth;
LocalDate initial = LocalDate.of(2014, 2, 13);
LocalDate start = initial.withDayOfMonth(1);
LocalDate end = initial.with(lastDayOfMonth());
Run Code Online (Sandbox Code Playgroud)
LocalDate endDate = startDate.withDayOfMonth(1).plusMonths(1).minusDays(1);
Run Code Online (Sandbox Code Playgroud)
或者
LocalDate startDate = LocalDate.now();
System.out.println("startDate: "+startDate);
LocalDate firstDayOfMonth_of_startDate = startDate.withDayOfMonth(1);
System.out.println("firstDayOfMonth_of_startDate: "+firstDayOfMonth_of_startDate);
LocalDate firstDayOfNextMonth_of_startDate = firstDayOfMonth_of_startDate.plusMonths(1);
System.out.println("firstDayOfNextMonth_of_startDate: "+firstDayOfNextMonth_of_startDate);
LocalDate lastDayOfTheMonth_of_startDate = firstDayOfNextMonth_of_startDate.minusDays(1);
System.out.println("lastDayOfTheMonth_of_startDate: "+lastDayOfTheMonth_of_startDate);
// or everything in one line
LocalDate endDate = startDate.withDayOfMonth(1).plusMonths(1).minusDays(1);
System.out.println("endDate: "+endDate);
Run Code Online (Sandbox Code Playgroud)
和打印输出
startDate: 2021-11-05
firstDayOfMonth_of_startDate: 2021-11-01
firstDayOfNextMonth_of_startDate: 2021-12-01
lastDayOfTheMonth_of_startDate: 2021-11-30
endDate: 2021-11-30
Run Code Online (Sandbox Code Playgroud)
小智 6
LocalDate monthstart = LocalDate.of(year,month,1);
LocalDate monthend = monthstart.plusDays(monthstart.lengthOfMonth()-1);
Run Code Online (Sandbox Code Playgroud)
如果有人来寻找前一个月的第一天,和上月的最后一天:
public static LocalDate firstDayOfPreviousMonth(LocalDate date) {
return date.minusMonths(1).withDayOfMonth(1);
}
public static LocalDate lastDayOfPreviousMonth(LocalDate date) {
return date.withDayOfMonth(1).minusDays(1);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
71000 次 |
| 最近记录: |