我需要向java日期添加一个小数点的月份:->,我可以使用这段代码与一起将一个月的自然数量添加到一个日期。但是,如何将小数的月份(例如3.5)添加到日期中呢?
Date date = new Date();
DateTime dateTime = new DateTime(date);
dateTime = dateTime.plusMonths(3);
Date newDate = dateTime.toDate();
发布于 2018-11-06 07:36:46
这会给你一个近似。这是你能得到的最好的。
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中类似的事情是否可能发生。
https://stackoverflow.com/questions/53173616
复制相似问题