在 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);
}
}
我正在尝试获取作为参数发送的字符串格式的给定日期(“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);
}
}