gpt4 book ai didi

java - 如何查找两个日期之间的总月数(包括额外天数)?

转载 作者:行者123 更新时间:2023-12-01 12:55:16 24 4
gpt4 key购买 nike

我有一个要求,我需要找出两个日期之间的月数,包括额外的天数。

示例:

开始日期:2014年1月1日

结束日期:2014年2月21日

LocalDate startDate = new LocalDate(startDate1);

LocalDate endDate = new LocalDate(endDate1);

PeriodType monthDay =PeriodType.yearMonthDay().withYearsRemoved();

Period difference = new Period(startDate, endDate, monthDay);

int months = difference.getMonths();

int days = difference.getDays()

我将得到的输出是:

months:1 days:20

但我的要求是我想要获得包括额外一天在内的总月数。

喜欢:1.66 个月。

如何在java中得到这个?

最佳答案

为了能够表示 1.66 个月,您需要定义一个月有多长。它并不总是一样的。如果您假设一个月有 30 天那么您可以使用以下方法解决这个问题:

Date startDate = new SimpleDateFormat("dd/MM/yyyy").parse("01/01/2014");
Date endDate = new SimpleDateFormat("dd/MM/yyyy").parse("21/02/2014");
double result = (endDate.getTime() - startDate.getTime()) / (1000D*60*60*24*30);

这给了我们1.7,如果你除以31,你会得到1.6451612903225807

如果您想要更好(但不完美)地估计一个月有多长,您可以尝试 365/12 ,它会给您 1.6767123287671233 但这仍然不是完美,因为闰年​​有 366 天。

问题不在于公式,而在于问题定义。现实生活中没有人会说“我将在 1.66 个月内到达那里”,也没有人会要求您将 1.66 个月 换算为几天。

关于java - 如何查找两个日期之间的总月数(包括额外天数)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23966406/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com