jip*_*iee 3 java time java-8 localdate
我想将 a 转换为具有指定的YearMontha ,例如 2019 年 2 月的第二个星期二。LocalDateDayOfWeek
以下代码抛出DateTimeException:
YearMonth yearMonth = YearMonth.of(2019, Month.FEBRUARY);
TemporalAdjuster secondTuesday = TemporalAdjusters.dayOfWeekInMonth(2, DayOfWeek.TUESDAY);
LocalDate date = LocalDate.from(yearMonth).with(secondTuesday);
Run Code Online (Sandbox Code Playgroud)
为了使我的代码工作,我需要将最后一行替换为
LocalDate date = yearMonth.atDay(1).with(secondTuesday);
Run Code Online (Sandbox Code Playgroud)
是否有一种不需要使用的更清洁的解决方案atDay(1)?
您已经自己找到了最好、最干净(或最不差)的解决方案:
\n\nLocalDate date = yearMonth.atDay(1).with(secondTuesday);\nRun Code Online (Sandbox Code Playgroud)\n\ndoes\xe2\x80\x99t的参数atDay不一定需要为 1,但它需要是相关月份中的有效日期,所以为什么不是 1?
with()始终返回与您调用它的类型相同的类型。也就是说,YearMonth.with()将始终返回 a YearMonth,从不返回 a LocalDate。因此您不能在那里使用调节器。
我理解并同意你的反对意见,但你\xe2\x80\x99已经得到的是我们能做的最好的。您可以而且应该将其包装在一个具有好听名称的方法中。
\n| 归档时间: |
|
| 查看次数: |
5446 次 |
| 最近记录: |