有没有一种优雅的方式可以使用JodaTime为给定日期查找一周中最近的一天?我最初认为setCopy()
就是这样,但是这一天设置在同一周的特定日期。因此,如果ld
是2011-11-27
而day
是“星期一”,则下面的函数会根据需要返回2011-11-21
,而不是2011-11-28
。如何找到最近的一个星期的任意日期?
// Note that "day" can be _any_ day of the week, not just weekdays.
LocalDate getNearestDayOfWeek(LocalDate ld, String day) {
return ld.dayOfWeek().setCopy(day);
}
所需的输出为各种输入:
2011-12-04, Monday => 2011-12-05
2011-12-04, Tuesday => 2011-12-06
2011-12-04, Wednesday => 2011-12-07
2011-12-04, Thursday => 2011-12-01
2011-12-04, Friday => 2011-12-02
2011-12-04, Saturday => 2011-12-03
2011-12-04, Sunday => 2011-12-04
2011-12-05, Monday => 2011-12-05
2011-12-05, Tuesday => 2011-12-06
2011-12-05, Wednesday => 2011-12-07
2011-12-05, Thursday => 2011-12-08
2011-12-05, Friday => 2011-12-02
2011-12-05, Saturday => 2011-12-03
2011-12-05, Sunday => 2011-12-04
下面是一个变通,我想出了的作品在我目前的状况特定的限制,但我很想得到帮助寻找一个通用的完全通用的解决方案。
LocalDate getNearestDayOfWeek(LocalDate ld, String day) {
LocalDate target = ld.dayOfWeek().setCopy(day);
if (ld.getDayOfWeek() > DateTimeConstants.SATURDAY) {
target = target.plusWeeks(1);
}
return target;
}
的可能重复[乔达 - 时间:?如何获得下周五(http://stackoverflow.com/questions/1636038/joda-time-如何得到下一个星期五) – 2011-11-30 06:09:39
我不这么认为。找到_next_天,但我想找到_nearest_天。 –
您需要定义“最近的”和“平日”的含义,以便能够提供正确的答案。也许是预期投入到产出的表格? – JodaStephen