乔达时间-两个日期之间的月份差

卡洛斯·洛佩兹(Carlos Lopez)

我需要得到两个日期之间月份的差额,我使用的是乔达时间,问题是这样的:

DateTime date1 = new DateTime().withDate(2015, 2, 1);
DateTime date2 = new DateTime().withDate(2015, 1, 1);
Months m = Months.monthsBetween(date1, date2);
int monthDif = m.getMonths();//this return 0 

它返回0,因为两个日期中间没有月份,我需要以几个月而不是几个月为单位返回差额,并且当日期相同时,将1加成问题。

怒吼

将首个日期更改为2015-02-02,Joda会正确返回1个月:

DateTime date1 = new DateTime().withDate(2015, 2, 2);
DateTime date2 = new DateTime().withDate(2015, 1, 1);

System.out.println(Months.monthsBetween(date2, date1).getMonths());
// Returns 1.

因此,我的猜测是,由于您没有提供时间部分,因此Joda无法确切知道2015年1月1日 date2所指的时间点您可能已经提到23:59:59,在这种情况下,从技术上讲,还没有整整一个月。

如果您明确提供零时间部分,则它会按您最初的预期工作:

DateTime date1 = new DateTime().withDate(2015, 2, 1).withTime(0, 0, 0, 0);
DateTime date2 = new DateTime().withDate(2015, 1, 1).withTime(0, 0, 0, 0);

System.out.println(Months.monthsBetween(date2, date1).getMonths());
// Returns 1.

因此,建议您在每个日期中明确指定一个00:00:00时间部分

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Java日期验证乔达时间

乔达时间plusDays错误的日期

乔达时间-计算两个日期之间的秒数会引发异常。

乔达时间-两个日期之间的所有星期一

欧洲/柏林的乔达时间日期时间夏时制

如何获得两个当地时间乔达的小时和分钟差

乔达时间和Java8时差

乔达时间中的包含日期范围检查

从星期几中获取乔达时间的日期名称

在跳过假期+乔达时间的同时计算结束日期

两个日期时间之间的差

计算乔达时间中的日期差时,应显示天数而不是星期数

如何使用乔达时间在Java中将字符串转换为日期时间

Android转换日期时间解析错误(甚至尝试过乔达时间)

乔达时间:无论输入什么日期,为什么“月”值默认为“一月”?

乔达(Joda)时间更改日期调整时的UTC偏移量

乔达时间IllegalArgumentException

添加乔达时间

Java中两个日期之间的时间差

javascript中两个日期之间的时间差?

乔达时间:计算到下一个完整间隔的时间(以月为单位)

在熊猫的两个日期时间之间是否有给定日期和月份的日期?

如何减去两个乔达日期时间?

如何检查两个日期之间的时间是否超过一定的月份数?

为什么 JavaScript 代码不会计算两个 HTML 日期时间输入之间的月份?

如何计算两个日期时间之间的时间差?

如何从数据框中找到两个日期/时间列之间的时间差

计算Elixir中两个日期之间的时间差的方法

返回两个日期时间表达式之间的差