有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用java导航到下一页或上一页的日期-月份差异

我必须写一个通用代码,它应该给两个日期之间的月差

例如,我的输入数据将是

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

根据月份差异,我必须向前移动(如果date2是未来日期到日期1)或向后移动(如果date2是过去日期到日期1),这是很多次


共 (3) 个答案

  1. # 1 楼答案

    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*/;
    

    数学。您可以确保31天和28天的月份返回正确的值 将数据和数据2替换为您自己的值

  2. # 2 楼答案

    tl;博士

    Period.between( 
        LocalDate.of( 2016 , Month.JANUARY , 22 ) , 
        LocalDate.of( 2016 , Month.MARCH , 30 )
    ).isNegative()
    

    细节

    你的问题不清楚,但这可能会帮助你找到正确的方向

    避免麻烦的旧日期时间类,例如Date,这些类现在是遗留的,被java所取代。时间课

    LocalDate

    ^{}类表示一个只包含日期的值,不包含一天中的时间和时区

    日期1=22/01/2016 日期2=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。时间

    java.time框架内置于Java8和更高版本中。这些类取代了麻烦的旧legacy日期时间类,如^{}^{}、&^{}

    现在位于maintenance modeJoda-Time项目建议迁移到java.time

    要了解更多信息,请参阅Oracle Tutorial。并搜索堆栈溢出以获得许多示例和解释。规范是JSR 310

    在哪里可以获得java。时间课

    ThreeTen-Extra项目扩展了java。额外上课的时间。这个项目是将来可能添加到java的一个试验场。时间您可以在这里找到一些有用的类,例如^{}^{}^{}more

  3. # 3 楼答案

    您可以简单地比较这两个日期here

    根据结果,您只需调用与您自己单击按钮相同的代码(只需调用相应的方法(如果您不使用该方法,我建议您这样做))

    乌鸦你好

    编辑:
    两个日期之间的差异可通过like this计算得出