Có cách nào thanh lịch để tìm ngày gần nhất trong tuần cho một ngày nhất định bằng JodaTime không? Ban đầu tôi nghĩ setCopy()
sẽ là nó, nhưng điều này đặt ra ngày này sang ngày đặc biệt trong cùng một tuần. Vì vậy, nếu ld
là 2011-11-27
và day
là "Monday" chức năng sau trả 2011-11-21
, và không 2011-11-28
như tôi muốn.Làm thế nào để tìm ngày trong tuần gần nhất cho một ngày tùy ý?
// Note that "day" can be _any_ day of the week, not just weekdays.
LocalDate getNearestDayOfWeek(LocalDate ld, String day) {
return ld.dayOfWeek().setCopy(day);
}
đầu ra mong muốn cho các đầu vào khác nhau:
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
Dưới đây là một công việc xung quanh tôi đã đưa ra mà làm việc cho những hạn chế đặc biệt trong tình hình hiện tại của tôi, nhưng tôi rất muốn được giúp đỡ tìm một giải pháp hoàn toàn chung chung luôn hoạt động.
LocalDate getNearestDayOfWeek(LocalDate ld, String day) {
LocalDate target = ld.dayOfWeek().setCopy(day);
if (ld.getDayOfWeek() > DateTimeConstants.SATURDAY) {
target = target.plusWeeks(1);
}
return target;
}
thể trùng lặp của [Joda Thời gian: Làm thế nào để có được những thứ sáu tiếp theo] (http://stackoverflow.com/questions/1636038/joda-time- làm thế nào để có được-the-the-the-thứ-thứ sáu) –
Tôi không nghĩ như vậy. Điều đó tìm thấy ngày _next_, nhưng tôi muốn tìm ngày _nearest_. –
Bạn cần xác định ý bạn là "gần nhất" và "ngày trong tuần" để có thể cung cấp câu trả lời đúng. Có lẽ một bảng đầu vào dự kiến sẽ xuất ra? – JodaStephen