使用java的月差异,导航到下一页或上一页

时间:2015-12-10 17:31:46

标签: java date selenium

我已经编写了一个通用代码,它应该在两个日期之间给出几个月的差异。

例如,我的输入数据将是

1.  date1 = 22/01/2016
date2 = 30/03/2016
2. date1 = 22/01/2016
date2 = 20/12/2015

根据月差异,我将向前移动(如果date2是未来日期到达日期1)向后移动(如果date2是过去日期到日期1)那些很多次。

3 个答案:

答案 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)

TL;博士

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() ;

您的评论提到了几个月。了解多种计算月数的方法:

  • 计算天数,除以30作为一般月份的长度。
  • 完全涵盖的日历月数
  • 时间跨度所触及的日历月数

Java提供至少其中一些。阅读文档以确定哪些符合您的需求。如果及时倒退,结果数字为负数。

ChronoUnit.MONTHS

long months = ChronoUnit.MONTHS.between( start , stop ) ;

Period.toTotalMonths

int months = Period.between( start , stop ).toTotalMonths() ;

关于java.time

java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.DateCalendar和& SimpleDateFormat

现在位于Joda-Timemaintenance mode项目建议迁移到java.time类。

要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310

从哪里获取java.time类?

ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如IntervalYearWeekYearQuartermore