gpt4 book ai didi

java - 2 java.util.Date 之间的月数,不包括月中的第几天

转载 作者:搜寻专家 更新时间:2023-10-31 08:12:25 25 4
gpt4 key购买 nike

我想要 2 个 java.util.Date 之间的月份数,不计算月份中的天数。所以我只想要比较中的年份和月份。

示例:

 monthsBetween(new Date(2012,01,28), new Date(2012,02,01)) ---> 1

monthsBetween(new Date(2012,02,27), new Date(2012,02,28)) ---> 0

monthsBetween(new Date(2012,03,28), new Date(2012,07,01)) ---> 4

我已经尝试过这个(返回 0,预期为 1),使用 Joda-time:

private static int monthsBetween(final Date fromDate, final Date toDate) {
DateTime date1 = new DateTime().withDate(2012, 1, 20);
DateTime date2 = new DateTime().withDate(2012, 2, 13);
PeriodType monthDay = PeriodType.yearDayTime().withDaysRemoved();
Period difference = new Period(date1, date2, monthDay);
int months = difference.getMonths();

return months;
}

还有这个(相同的结果),使用 Joda-time:

private static int monthsBetween(final Date fromDate, final Date toDate) {
return Months.monthsBetween(new DateTime(fromDate), new DateTime(toDate).getMonths();
}

我怎样才能做到这一点?

最佳答案

您要求的是整个月份的数量 - 这与说“忽略月份的日期部分”不同。

首先,我建议使用 LocalDate而不是 DateTime用于计算。理想情况下,根本不要使用 java.util.Date,并将您的输入作为 LocalDate 开始(例如,通过直接将文本解析为它,或者您的数据来自。)将两个日期中的日期设置为 1,然后然后取月差:

private static int monthsBetweenIgnoreDays(LocalDate start, LocalDate end) {
start = start.withDayOfMonth(1);
end = end.withDayOfMonth(1);
return Months.monthsBetween(start, end).getMonths();
}

关于java - 2 java.util.Date 之间的月数,不包括月中的第几天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13566630/

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