首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在java中添加十进制月份到日期

在java中添加十进制月份到日期
EN

Stack Overflow用户
提问于 2018-11-06 14:11:08
回答 1查看 500关注 0票数 0

我需要向java日期添加一个小数点的月份:->,我可以使用这段代码与一起将一个月的自然数量添加到一个日期。但是,如何将小数的月份(例如3.5)添加到日期中呢?

代码语言:javascript
运行
复制
Date date = new Date();
DateTime dateTime = new DateTime(date);
dateTime = dateTime.plusMonths(3);
Date newDate = dateTime.toDate();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-06 15:36:46

这会给你一个近似。这是你能得到的最好的。

代码语言:javascript
运行
复制
    long oneMonthInNanos = ChronoUnit.MONTHS.getDuration().toNanos();
    ZonedDateTime now = ZonedDateTime.now(ZoneId.of("Asia/Phnom_Penh"));

    System.out.println("Now           " + now);
    System.out.println("In 3.5 months " + now.plusNanos(Math.round(3.5 * oneMonthInNanos)));
    System.out.println("In 4.5 months " + now.plusNanos(Math.round(4.5 * oneMonthInNanos)));
    System.out.println("In 12 months  " + now.plusNanos(Math.round(12.0 * oneMonthInNanos)));

我刚才运行代码时的输出是:

现在2018-11-06T22:31:36.460573+07:00Asia/Phnom_Penh在3.5个月2019-02-21T11:13:27.460573+07:00Asia/Phnom_Penh在4.5个月2019-03-23T21:42:33.460573+07:00Asia/Phnom_Penh在12个月2019-11-07T04:20:48.460573+07:00Asia/Phnom_Penh

正如在评论中所说,对于一个月的小数并没有真正好的定义。当你比较第一次和最后一次约会的时候,你也会清楚地看到,12个月加起来并不是一年,虽然非常接近。请检查你自己的结果是否足以达到你的目的。

我正在使用java.time。我不知道在Joda-Time中类似的事情是否可能发生。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53173616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档