我已经编写了一个通用代码,它应该在两个日期之间给出几个月的差异。
例如,我的输入数据将是
1. date1 = 22/01/2016
date2 = 30/03/2016
2. date1 = 22/01/2016
date2 = 20/12/2015
根据月差异,我将向前移动(如果date2是未来日期到达日期1)或向后移动(如果date2是过去日期到日期1)那些很多次。
答案 0 :(得分:0)
您可以简单地将这两个日期与here
进行比较根据结果你只需要调用相同的代码,就好像你自己点击按钮一样(只需调用相应的方法(如果你不使用某种方法,我会建议你这样做) ))
Greetings Raven
修改强>
可以计算两个日期之间的差异like this
答案 1 :(得分:0)
Calendar data = Calendar.getInstance();
Calendar data2 = Calendar.getInstance();
int diff =(int) Math.round(( (data2.getTimeInMillis() - data.getTimeInMillis()) /* ms*/
/ 1000.0 /* seconds*/
/ 3600.0 /*hours*/
/ 24.0 /*days*/
/ 30.0 ))/* monts*/;
使用Math.round,您可以确保31和28天的月份返回正确的值 将数据和数据2替换为您自己的值
答案 2 :(得分:0)
Period.between(
LocalDate.of( 2016 , Month.JANUARY , 22 ) ,
LocalDate.of( 2016 , Month.MARCH , 30 )
).isNegative()
您的问题不明确,但这可能有助于您找到正确的方向。
避免麻烦的旧日期时间类,例如Date
,这些类现在是遗留的,被java.time类取代。
LocalDate
LocalDate
类表示没有时间且没有时区的仅限日期的值。
date1 = 22/01/2016 date2 = 30/03/2016
LocalDate start = LocalDate.of( 2016 , Month.JANUARY , 22 ) ;
LocalDate stop = LocalDate.of( 2016 , Month.MARCH , 30 ) ;
Period
计算Period
过去的天数,月数和年数。
Period period = Period.between( start , stop ) ;
测试停止是否在开始之前,意味着经过的时间是负的,沿时间线向后移动。
Boolean isTimeGoingBackwards = period.isNegative() ;
您的评论提到了几个月。了解多种计算月数的方法:
Java提供至少其中一些。阅读文档以确定哪些符合您的需求。如果及时倒退,结果数字为负数。
ChronoUnit.MONTHS
long months = ChronoUnit.MONTHS.between( start , stop ) ;
Period.toTotalMonths
int months = Period.between( start , stop ).toTotalMonths() ;
java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.Date
,Calendar
和& SimpleDateFormat
现在位于Joda-Time的maintenance mode项目建议迁移到java.time类。
要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310。
从哪里获取java.time类?
ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如Interval
,YearWeek
,YearQuarter
和more。