Java LocalDate / LocalDateTime - 小时之间

时间:2017-10-27 12:50:08

标签: java java-time localdate datetime-comparison

我怎么知道两个时间表之间是否有一个小时?

示例:

10:00 is between 8:00 and 12:00?
7:30 is between 8:00 and 12:00?

我试着这样:

LocalDateTime s = LocalDateTime.of (2017, 10, 20, 8, 00);
LocalDateTime f = LocalDateTime.of (2017, 10, 20, 12, 00);

LocalDate test = LocalDate.of (2017, 10, 20, 10, 00); (<- Must be LocalDate)

if ((test.isAfter (s)) && (test.isBefore (s))
   return true;
else
   return false;

它返回以下错误:

  

方法isBefore(ChronoLocalDateTime)在类型LocalDateTime中不适用于参数       (本地时间)

3 个答案:

答案 0 :(得分:7)

如果您只对时间感兴趣,为什么要包含日期?

LocalTime s = LocalTime.of (8, 0);
LocalTime f = LocalTime.of (12, 0);

LocalTime test = LocalTime.of (10, 0);

if (test.isAfter (s) && test.isBefore (f))

如果您收到LocalDateTime,则可以致电ldt.toLocalTime()

答案 1 :(得分:0)

然后去LocalDates;也许使用!after代替before

return test.isAfter(s.toLocalDate()) && test.isBefore(f.toLocalDate());

答案 2 :(得分:-1)

你的问题是错误的,因为代码甚至没有编译,但我想你正在寻找LocalDate对象上的以下方法:

  • atStartOfDay()LocalDate转换为LocalDateTime,时间为00:00

  • atTime(int hour, int minute)使用提供的时间将LocalDate转换为LocalDateTime