【发布时间】:2017-05-05 01:25:49
【问题描述】:
我需要得到两个 joda 日期时间之间的天数、月数和年数的确切差异。我正在使用下面的代码:
DateTime jodaStartTime=new DateTime(startTime);
DateTime jodaEndTime=new DateTime(endTime);
Period period = new Period(jodaStartTime, jodaEndTime);
System.out.print(period.getYears() + " years, ");
System.out.print(period.getMonths() + " months, ");
但是,例如,我需要得到确切的年份而不是 2 年,我应该得到 2010,2011 或者不是 18 个月(涵盖所有月份),我需要得到 1 到 12 之间的范围。
首先,我想更改这段代码,以便我可以使用 Java 8 时间,那么如何使用 Java 8 时间呢?
【问题讨论】:
-
以年为单位的范围要求对我来说是有意义的,但以月或日为单位的范围要求却不是。如果两个日期相隔 18 个月,您可能会报告 1 年,但是您会报告 哪些 个月?
-
顺便说一下,JodaTime 现在处于维护模式,假设您使用的是 Java 8,您可能希望使用 Java 8 的日期 API。
-
事实证明,“午夜/一天的开始”有时意味着凌晨 1 点(在某些地方会以这种方式进行夏令时),而 Days.days Between 无法正确处理。
-
嗨,我编辑了我的问题,使用 java 8 和 java.time 模块完成上述操作。
-
和 2009 年答案的副本:Calculating the difference between two Java date instances。