V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jiobanma
V2EX  ›  Java

求个 Java 工具类(计算两个时间内的自然周数)

  •  
  •   jiobanma ·
    banmajio · 2021-10-29 18:51:23 +08:00 · 2287 次点击
    这是一个创建于 881 天前的主题,其中的信息可能已经有所发展或是发生改变。

    周六开始 也算一周,截至到周一 也算一周 算自然周的个数,而不是相差周的个数

    麻了

    13 条回复    2021-11-08 11:11:43 +08:00
    frandy
        1
    frandy  
       2021-10-29 18:54:36 +08:00
    算天数,然后除以 7 不行么
    Junzhou
        2
    Junzhou  
       2021-10-29 18:56:21 +08:00
    我寻思这玩意写起来有啥难度的。。。
    aircjm
        3
    aircjm  
       2021-10-29 18:57:34 +08:00 via Android
    这个难点在哪里啊 说说呢 阻挡你写代码的问题是什么
    Hyduan
        4
    Hyduan  
       2021-10-29 19:00:29 +08:00
    @frandy “算自然周的个数,而不是相差周的个数” 直接除 7 不对吧
    Junzhou
        5
    Junzhou  
       2021-10-29 19:03:45 +08:00
    只要算出第一天是周几,剩下的直接模拟就完事了。
    err1y
        6
    err1y  
       2021-10-29 19:27:18 +08:00 via iPhone
    ((开始时间戳-结束时间戳)/一天的秒数 +6 )/7
    tanhui2333
        7
    tanhui2333  
       2021-10-29 20:44:18 +08:00
    其中一种情况:找到第一个周末,找到最后一个周一,中间有 n 天, 加起来共 n / 2 + 1 + 1 。
    再把另几种情况算算就差不多了。
    albertni
        8
    albertni  
       2021-10-30 02:04:27 +08:00 via Android
    先算有几个 7 天(整周),然后如果结束日期的 weekday 比开始日期小就加一周
    albertni
        9
    albertni  
       2021-10-30 02:13:14 +08:00 via Android
    @albertni 补充一下,还要把开始日期所在的周加进去,就是固定要再加一周。
    举例:
    周三到周六,经过 0 个整周,6>3 所以+0 ,再加开始日所在的 1 周,共覆盖 0+0+1=1 周
    周六到周三,经过 0 个整周,3<6 加 1 周,再加开始周,共覆盖 0+1+1=2 周
    周二到 3 周后的周五就是 3+0+1 覆盖了 4 周
    以此类推
    Zien
        10
    Zien  
       2021-10-30 02:48:16 +08:00
    看半天不太懂,就是两个时间之间的存在多个自然周(头尾 inclusive )?
    如果这样的话,先求结束日期所在的那个星期的星期一 endMonday (假设星期一为每周第一天),
    然后用(endMonday - 开始日期 + 6) / 7 + 1 就是结果了。
    zhuwd
        11
    zhuwd  
       2021-10-30 10:35:03 +08:00 via iPhone
    天数除以 7 ,然后向上取整
    zxCoder
        12
    zxCoder  
       2021-10-30 12:08:25 +08:00 via Android
    (这不是随便一个大学 acm 校赛的签到题
    luckyone
        13
    luckyone  
       2021-11-08 11:11:43 +08:00
    @zxCoder dna 动了,是签到题的感觉
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3232 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 11:57 · PVG 19:57 · LAX 04:57 · JFK 07:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.