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

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

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

    又或者安日期算,结果是 X 月多 Y 天,或者 X 月差 Z 天。
    zhady009
        6
    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
        7
    zabio  
       2019-08-30 18:46:06 +08:00
    了解一下 Calendar.getInstance().add()
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1263 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 23:30 · PVG 07:30 · LAX 15:30 · JFK 18:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.