在java中计算两个日期之间的天数的3种方法|示例

191 阅读1分钟

在本教程中,我们将学习以下不同的例子

  • 两个日期之间的差异,并返回天数月数和周数
  • 给定的Util日期是超过90天的

java.time.temporal.ChronoUnit是java8中引入的一个枚举类。它是用来衡量时间的年、月、周、日、小时、分钟。下面的例子找到了两个日期之间的日周月数。

这里的日期是[LocalDate)(/2018/08/java8-top-10-localdate-examples-with.html) ,没有时区信息。

import java.time.LocalDate;
import java.time.temporal.ChronoUnit;

public class CountDays {
    public static void main(String[] args) {
        LocalDate fromDate = LocalDate.of(2021,01,05);
        LocalDate toDate = LocalDate.of(2021,02,05);
        long days = ChronoUnit.DAYS.between(fromDate, toDate);
        long weeks = ChronoUnit.WEEKS.between(fromDate, toDate);
        long months = ChronoUnit.MONTHS.between(fromDate, toDate);

        System.out.println("Days "+days);
        System.out.println("weeks "+weeks);
        System.out.println("months "+months);

    }
}

输出

Days 31
weeks 4
months 1

这里的日期是java.util.Date首先使用plusDays方法得到ZonedDateTime的当前时间,用-90天返回90daysago对象。使用isBefore方法进行比较

ZonedDateTime now = ZonedDateTime.now();
ZonedDateTime 90daysAgo = now.plusDays(-90);
if (givenDate.isBefore(thirtyDaysAgo.toInstant())) {
    System.out.println("Given Date is 90 days ago")
}

JODA是一个用于在java中更好地处理日期和时间的库。

使用这个API很简单

LocalDate fromDate = LocalDate.of(2021,01,05);
LocalDate toDate = LocalDate.of(2021,02,05);
int daysCount = Days.daysBetween(fromDate, toDate).getDays();