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

2021-10-29 18:51:23 +08:00
 jiobanma

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

麻了

2613 次点击
所在节点    Java
13 条回复
frandy
2021-10-29 18:54:36 +08:00
算天数,然后除以 7 不行么
Junzhou
2021-10-29 18:56:21 +08:00
我寻思这玩意写起来有啥难度的。。。
aircjm
2021-10-29 18:57:34 +08:00
这个难点在哪里啊 说说呢 阻挡你写代码的问题是什么
Hyduan
2021-10-29 19:00:29 +08:00
@frandy “算自然周的个数,而不是相差周的个数” 直接除 7 不对吧
Junzhou
2021-10-29 19:03:45 +08:00
只要算出第一天是周几,剩下的直接模拟就完事了。
err1y
2021-10-29 19:27:18 +08:00
((开始时间戳-结束时间戳)/一天的秒数 +6 )/7
tanhui2333
2021-10-29 20:44:18 +08:00
其中一种情况:找到第一个周末,找到最后一个周一,中间有 n 天, 加起来共 n / 2 + 1 + 1 。
再把另几种情况算算就差不多了。
albertni
2021-10-30 02:04:27 +08:00
先算有几个 7 天(整周),然后如果结束日期的 weekday 比开始日期小就加一周
albertni
2021-10-30 02:13:14 +08:00
@albertni 补充一下,还要把开始日期所在的周加进去,就是固定要再加一周。
举例:
周三到周六,经过 0 个整周,6>3 所以+0 ,再加开始日所在的 1 周,共覆盖 0+0+1=1 周
周六到周三,经过 0 个整周,3<6 加 1 周,再加开始周,共覆盖 0+1+1=2 周
周二到 3 周后的周五就是 3+0+1 覆盖了 4 周
以此类推
Zien
2021-10-30 02:48:16 +08:00
看半天不太懂,就是两个时间之间的存在多个自然周(头尾 inclusive )?
如果这样的话,先求结束日期所在的那个星期的星期一 endMonday (假设星期一为每周第一天),
然后用(endMonday - 开始日期 + 6) / 7 + 1 就是结果了。
zhuwd
2021-10-30 10:35:03 +08:00
天数除以 7 ,然后向上取整
zxCoder
2021-10-30 12:08:25 +08:00
(这不是随便一个大学 acm 校赛的签到题
luckyone
2021-11-08 11:11:43 +08:00
@zxCoder dna 动了,是签到题的感觉

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/811606

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX