我想在一周的开头和当周的结束之间创建一个间隔.
我从以下答案中借鉴了以下代码:
private LocalDateTime calcNextSunday(LocalDateTime d) {
if (d.getDayOfWeek() > DateTimeConstants.SUNDAY) {
d = d.plusWeeks(1);
}
return d.withDayOfWeek(DateTimeConstants.SUNDAY);
}
private LocalDateTime calcPreviousMonday(LocalDateTime d) {
if (d.getDayOfWeek() < DateTimeConstants.MONDAY) {
d = d.minusWeeks(1);
}
return d.withDayOfWeek(DateTimeConstants.MONDAY);
}
Run Code Online (Sandbox Code Playgroud)
但现在我希望周一LocalDateTime是00:00:00,周日LocalDateTime是23:59:59.我该怎么做?
鉴于JSR-310对象,例如LocalDate,我如何找到下周三(或任何其他星期几)的日期?
LocalDate today = LocalDate.now();
LocalDate nextWed = ???
Run Code Online (Sandbox Code Playgroud) 有没有一种优雅的方法可以使用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);
}
Run Code Online (Sandbox Code Playgroud)
各种输入的所需输出:
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, …Run Code Online (Sandbox Code Playgroud) 我正在尝试获取下一个即将到来的星期五的日期,并将其格式设置为yyyyMMDD。如果可能,我想不使用JodaTime来执行此操作。这是我的代码:
import java.time.LocalDate;
import java.time.temporal.TemporalAdjusters;
import java.time.DayOfWeek;
import java.time.format.DateTimeFormatter;
// snippet from main method
LocalDate friday = LocalDate.now().with(TemporalAdjusters.next(DayOfWeek.FRIDAY));
DateTimeFormatter formatter = DateTimeFormatter.ofPattern('yyyyMMDD');
System.out.println(friday.format(formatter));
Run Code Online (Sandbox Code Playgroud)
但是当我运行此命令时,出现以下错误(今天运行20170809)
java.time.DateTimeException: Field DayOfYear cannot be printed as the value 223 exceeds the maximum print width of 2
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
编辑:我正在使用Java 8
如何查找上一个(上一个)"星期五"的日期或指定日期的任何其他日期?
public getDateOnDay(Date date, String dayName) {
// ?
}
Run Code Online (Sandbox Code Playgroud)