在 JAVA 中获取日期和今天之间的月数

Get the number of months beetween a date and today in JAVA

我正在尝试获取作为参数发送的字符串格式的给定日期(“2019-05-31”)与今天:2020-07-13 之间的月数。在此示例中,它将是 13 个月。

我想把答案放在一个 int 变量中。

有简单的方法吗?

非常感谢!

java.time

使用java.time类.

Period::toTotalMonths 方法 returns long 计算整个时间跨度内经过的月数。

您要求 int 而不是 long。与其将 long 转换为您想要的 int,不如调用 Math.toIntExact。如果强制转换产生的缩小溢出,此方法将引发异常。

int months =
    Math.toIntExact(
        Period.between
        (
            LocalDate.parse( "2019-05-31" ) ,
            LocalDate.now( ZoneId.of( "Africa/Tunis" ) )
        )
        .toTotalMonths()
    )
;

自 Java 1.8:

LocalDate today = LocalDate.now();
LocalDate myDate = LocalDate.parse("2019-05-31");
int months = (int) Period.between(myDate,today).toTotalMonths();
System.out.println(months); // output: 13

您可以使用以下方法

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

public class DateUtil{

    public static void main(String[] args) {

        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        String date = "2019-05-31";
        LocalDate localDate = LocalDate.parse(date, formatter);
        LocalDate now = LocalDate.now();

        long diff = ChronoUnit.MONTHS.between(localDate, now);

        System.out.println(diff);

    }
}