如何找到两个Joda-Time DateTime实例之间的天数差异? 我的意思是,如果开始是星期一,结束是星期二,我期望返回值为1,而不管开始日期和结束日期的小时/分钟/秒。

天。daysBetween(start, end). getdays()如果开始在晚上,结束在早上,则返回0。

我也有其他日期字段相同的问题,所以我希望有一种通用的方法来“忽略”较不重要的字段。

换句话说,2月到3月4日之间的月份也是1,14:45到15:12之间的时间也是1。但是14:01和14:55之间的小时差是0。


当前回答

java.time.Period

使用java.time.Period类计算天数。

由于Java 8计算差异时使用LocalDate、LocalDateTime来表示两个日期更为直观

    LocalDate now = LocalDate.now();
    LocalDate inputDate = LocalDate.of(2018, 11, 28);

    Period period = Period.between( inputDate, now);
    int diff = period.getDays();
    System.out.println("diff = " + diff);

其他回答

你可以使用LocalDate:

Days.daysBetween(new LocalDate(start), new LocalDate(end)).getDays() 

java.time.Period

使用java.time.Period类计算天数。

由于Java 8计算差异时使用LocalDate、LocalDateTime来表示两个日期更为直观

    LocalDate now = LocalDate.now();
    LocalDate inputDate = LocalDate.of(2018, 11, 28);

    Period period = Period.between( inputDate, now);
    int diff = period.getDays();
    System.out.println("diff = " + diff);
DateTime  dt  = new DateTime(laterDate);        

DateTime newDate = dt.minus( new  DateTime ( previousDate ).getMillis());

System.out.println("No of days : " + newDate.getDayOfYear() - 1 );    

天类

使用withTimeAtStartOfDay方法使用Days类应该可以工作:

Days.daysBetween(start.withTimeAtStartOfDay() , end.withTimeAtStartOfDay() ).getDays() 

常量日期和当前日期之间的差异(Joda)

你可以使用Days.daysBetween(jodaDate1,jodaDate2)

这里有一个例子:

        val dateTime: DateTime = DateTime.parse("14/09/2020",
            DateTimeFormat.forPattern("dd/MM/yyyy"))
        val currentDate = DateTime.now()
        //To calculate the days in between
        val dayCount = Days.daysBetween(dateTime,currentDate).days
        //Set Value to TextView 
        binding.daysCount.text = dayCount.toString()