跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 请教一个关于 Java 比较时间多问题
未分類
11 9 月 2020

请教一个关于 Java 比较时间多问题

请教一个关于 Java 比较时间多问题

資深大佬 : wleexi 2

{     "timers": [         {             "dayofWeek": "1",             "startTimeofDay": "20:50"         },         {             "dayofWeek": "3",             "startTimeofDay": "20:50"         },         {             "dayofWeek": "4",             "startTimeofDay": "23:50"         }     ] } 

有如上的 JSON 串。dayofWeek 表示周几,startTimeofDay 代表了指定的 dayofWeek 的时间。 需要从程序运行时间的年月日,是否有符合未来 24 小时的时间,如果有则选出没有则不反悔。 这样要怎么计算才合理。

大佬有話說 (10)

  • 資深大佬 : chocovon

    dayofWeek 为 1,当天是 7,这算未来 24 小时吗?

  • 主 資深大佬 : wleexi

    @chocovon 我不知道能不能理解你的意思 ,现在是周一,需要在串中负责当前时间未来 24 小时候内的记录。

  • 資深大佬 : StopTheWorld

    周一是本周一还是下周一。感觉用 LocalDateTime 挺简单的。

  • 主 資深大佬 : wleexi

    @StopTheWorld 看当前时间,如果和当前是周一,那么就是今天,如果已经过了,那么就是下周了。

  • 資深大佬 : nvioue

    把这些时间排个序 2 分查找 ??? 难点在哪里? 还是我理解错了

  • 資深大佬 : chendy

    LocalDateTime 可做,算出时间,和当前时间取 Duration,判断是不是大于一天
    星期几没有现成方法,自己判断本周还是下周去 plusDays 就可以了

  • 主 資深大佬 : wleexi

    @chendy 出现跨年,跨月的时候怎么生成 LocalDateTime 呢

  • 資深大佬 : aguesuka

    过得 todayOfWeek 和 tomorrowOfWeek,遍历,如果是今天,看 LocalTime 是否晚于现在,如果是明天,看时间是否早于现在

  • 資深大佬 : aguesuka

    //自己初始化以下参数
    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))

  • 主 資深大佬 : wleexi

    “`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 感谢。这是我的方案。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具