2

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

 2 years ago
source link: https://www.v2ex.com/t/811606
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

V2EX  ›  Java

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

  jiobanma · 1 天前 · 994 次点击

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

12 条回复    2021-10-30 12:08:25 +08:00

frandy

frandy   1 天前

算天数,然后除以 7 不行么

Junzhou

Junzhou   1 天前

我寻思这玩意写起来有啥难度的。。。

aircjm

aircjm   1 天前 via Android

这个难点在哪里啊 说说呢 阻挡你写代码的问题是什么

Hyduan

Hyduan   1 天前

@frandy “算自然周的个数,而不是相差周的个数” 直接除 7 不对吧

Junzhou

Junzhou   1 天前

只要算出第一天是周几,剩下的直接模拟就完事了。

err1y

err1y   1 天前 via iPhone

((开始时间戳-结束时间戳)/一天的秒数 +6 )/7

tanhui2333

tanhui2333   1 天前

其中一种情况:找到第一个周末,找到最后一个周一,中间有 n 天, 加起来共 n / 2 + 1 + 1 。
再把另几种情况算算就差不多了。

albertni

albertni   1 天前 via Android

先算有几个 7 天(整周),然后如果结束日期的 weekday 比开始日期小就加一周

albertni

albertni   1 天前 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 周
以此类推

ZienZien   1 天前

看半天不太懂,就是两个时间之间的存在多个自然周(头尾 inclusive )?
如果这样的话,先求结束日期所在的那个星期的星期一 endMonday (假设星期一为每周第一天),
然后用(endMonday - 开始日期 + 6) / 7 + 1 就是结果了。

zhuwd

zhuwd   23 小时 31 分钟前 via iPhone

天数除以 7 ,然后向上取整

zxCoder

zxCoder   21 小时 57 分钟前 via Android

(这不是随便一个大学 acm 校赛的签到题

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK