现在要写一个工具类,计算两个日期之间相差多少个自然月,月底的问题有讨论一下的吗

2019-08-30 16:35:20 +08:00
 leeton
网上一搜一大堆,咋感觉他们写的不对呢,还是我的想法有问题?
2019-03-01 到 2019-06-01,所有人都知道相差 3 个月;
2019-03-31 到 2019-06-30,你们说相差几个自然月?
网上工具统一计算结果全是 2 个自然月,但是我咋觉得这明明就是相差 3 个月啊。这该咋写?
3405 次点击
所在节点    Java
7 条回复
arrow8899
2019-08-30 16:40:47 +08:00
这种要得你们自己的需求
2019-03-01 到 2019-06-01 可以认为 3456 4 个月,也可以认为是 45 2 个月。
leeton
2019-08-30 16:45:06 +08:00
@arrow8899 由于没有时分秒,所以都认为是 0:00。2019-03-01 到 2019-06-01,只会是 3、4、5 整月,这个没办法牵扯到 6 月的。
momocraft
2019-08-30 16:45:51 +08:00
先有明确定义才能讨论对错
arrow8899
2019-08-30 16:52:07 +08:00
@leeton 如果是 03-15,那么包不包含 3 月份呢?得看你们具体应用场景是什么
exiledkingcc
2019-08-30 17:00:36 +08:00
你干脆把输入限制为月不就行了,然后规定是否包含头尾。
不然 3-01 到 6- 15 算什么? 3.5 个月,还是四舍五入,如果四舍五入,那么有的月 30 天,有的 31 天,二月 28 或 29 天,怎么算?这样就没完没了了。

又或者安日期算,结果是 X 月多 Y 天,或者 X 月差 Z 天。
zhady009
2019-08-30 18:27:42 +08:00
jdk 不就自带吗..
LocalDate of = LocalDate.of(2019, 3, 1);
LocalDate dd = LocalDate.of(2019, 6, 1);
int i = dd.compareTo(of);
System.out.println(i);
zabio
2019-08-30 18:46:06 +08:00
了解一下 Calendar.getInstance().add()

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

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

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

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

© 2021 V2EX