{
"timers": [
{
"dayofWeek": "1",
"startTimeofDay": "20:50"
},
{
"dayofWeek": "3",
"startTimeofDay": "20:50"
},
{
"dayofWeek": "4",
"startTimeofDay": "23:50"
}
]
}
有如上的 JSON 串。dayofWeek 表示周几,startTimeofDay 代表了指定的 dayofWeek 的时间。 需要从程序运行时间的年月日,是否有符合未来 24 小时的时间,如果有则选出没有则不反悔。 这样要怎么计算才合理。
1
chocovon 2020-09-14 22:43:58 +08:00
dayofWeek 为 1,当天是 7,这算未来 24 小时吗?
|
3
StopTheWorld 2020-09-14 22:52:53 +08:00
周一是本周一还是下周一。感觉用 LocalDateTime 挺简单的。
|
4
wleexi OP @StopTheWorld 看当前时间,如果和当前是周一,那么就是今天,如果已经过了,那么就是下周了。
|
5
nvioue 2020-09-14 23:13:33 +08:00
把这些时间排个序 2 分查找 ??? 难点在哪里? 还是我理解错了
|
6
chendy 2020-09-14 23:54:17 +08:00
LocalDateTime 可做,算出时间,和当前时间取 Duration,判断是不是大于一天
星期几没有现成方法,自己判断本周还是下周去 plusDays 就可以了 |
8
aguesuka 2020-09-15 12:55:34 +08:00 via Android
过得 todayOfWeek 和 tomorrowOfWeek,遍历,如果是今天,看 LocalTime 是否晚于现在,如果是明天,看时间是否早于现在
|
9
aguesuka 2020-09-15 13:01:41 +08:00 via Android
//自己初始化以下参数
DayOfWeek today,tomorrow; LocalTime now; list.stream(). anyMatch(time-> time.dayofWeek.equals(today)&&time.startTimeofDay.isAfter(now) ||time.dayodWeek.eqauls(tomorrow)&&time.startTimeofDay.isBefor(now)) |
10
wleexi OP ```java
List<TimeRecord> timeRecordList = JSONObject.parseObject(recordsDesc, new TypeReference<List<TimeRecord>>() {}); for (TimeRecord oneRecordTime : timeRecordList) { DayOfWeek dayOfWeek = DayOfWeek.of(oneRecordTime.getDayofWeek()); LocalTime recordTime = oneRecordTime.getStartTimeofDay(); LocalDateTime recordDateTime = nowDateTime. with(TemporalAdjusters.nextOrSame(dayOfWeek)). withHour(recordTime.getHour()). withMinute(recordTime.getMinute()); long between = ChronoUnit.DAYS.between(nowDateTime,recordDateTime); if (between < 1) { return recordDateTime; } } @Data class TimeRecord{ private Integer dayofWeek; private LocalTime startTimeofDay; } ``` @aguesuka 感谢。这是我的方案。 |