相关疑难解决方法(0)

在JSR-310中查找下一个星期几的事件

鉴于JSR-310对象,例如LocalDate,我如何找到下周三(或任何其他星期几)的日期?

LocalDate today = LocalDate.now();
LocalDate nextWed = ???
Run Code Online (Sandbox Code Playgroud)

java datetime java-8 java-time

11
推荐指数
1
解决办法
1643
查看次数

使用java.time将月份添加到特定月份

使用LocalDateTime或将月份添加到指定日期最干净的解决方案是什么LocalDate

很好的答案是在java.time中,如何计算一个月的结果?在JSR-310中查找一周中某天的下一次出现,因此我希望可以使用类似的干净解决方案来解决此问题。

假设用户为某个周期性任务选择一个月中的某一天(从1到31)。选择后,将生成时间戳记,并且每个月都会增加。仅存储当前月份的时间戳(没有上个月的记录,每个月都会更新时间戳)和选定的月份。

如果选择的日期是31日,并且我们从1月31日开始添加一个月,则dateTime.plusMonths(1)方法将在2016年2月29日给出。如果dateTime.plusMonths(1)再次使用method,则结果是3月29日,而预期的是3月31日。但是,它的工作日为1日至28日。

可能正在使用每月31号的变通办法,dateTime.with(TemporalAdjusters.lastDayOfMonth())但这并不涵盖从28号到30号的日子,也可能是一个月的最后几天。

lastDayOfMonth()每月第30天的选定示例:1月30日2月29日(如果前一天的前一天较高,则plusMonth方法行为选择最后一天),3月31日(预期是每月的30号)。此方法不考虑每月的选定日期。


当然,这个问题有很多潜在的解决方案,包括一些检查和计算数月与数天之间的差异,但是我仅在可能的情况下使用java.time功能寻找解决方案。

澄清度

我正在寻找一种将日期移动到选定月份的下个月的方法。喜欢dateTime.plusMonths(1).withDayOfMonth(selectedDayOfMonth)。对于2月31日这样的日期,这将引发一个异常,以withDayOfMonth覆盖plusMonths对最后一个有效日期的调整。

使用plusMonth方法的迭代示例。在上一个迭代值中,采用-想象递归。

+-----------+------------------+---------------+
| iteration | Day-of-month: 31 |   Expected    |
+-----------+------------------+---------------+
|         1 | January 31st     | January 31st  |
|         2 | February 29th    | February 29th …
Run Code Online (Sandbox Code Playgroud)

java date java-time

5
推荐指数
1
解决办法
1048
查看次数

标签 统计

java ×2

java-time ×2

date ×1

datetime ×1

java-8 ×1