Java日期时间的比较

2025-05-23 22:00:45 | 中国队世界杯出线 | admin | 1376°c

🍔前言🍔 :

在Java编程中,经常需要对时间进行比较和处理。用于比较时间的类有多种,包括Date、Calendar和LocalDateTime等。本文将介绍如何在Java中比较时间的不同方法,并提供相应的代码示例

java日期时间比较,加减

Date类1,compareTo方法比较2,使用:before(),after()比较3,转换成时间戳(毫秒)进行比较

Calendar 类1,compareTo方法比较2,获取当前时间的毫秒值(时间戳)进行比较3,Calendar 加减指定的时间

LocalDateTime 类1,compareTo方法比较2,isBefore(),isAfter()比较3,LocalDateTime时间的加减4,用 Duration 计算时间间隔

Date类

1,compareTo方法比较

: compareTo方法返回一个整数值,表示两个日期的比较结果。如果返回值小于0,则表示date1在date2之前;如果返回值大于0,则表示date1在date2之后;如果返回值等于0,则表示两个日期相等。

Date date1 = new Date();

Date date2 = new Date();

int result = date1.compareTo(date2);

if (result < 0) {

System.out.println("date1在date2之前");

} else if (result > 0) {

System.out.println("date1在date2之后");

} else {

System.out.println("date1和date2相等");

}

:

2,使用:before(),after()比较

根据单词 :before()就是date1在date2之前, 而:after()就是date1在date2之后.

Date date1 = new Date();

Date date2 = new Date();

if (date1.before(date2)) {

System.out.println("date1在date2之前");

} else if (date1.after(date2)) {

System.out.println("date1在date2之后");

} else {

System.out.println("date1和date2相等");

}

:

3,转换成时间戳(毫秒)进行比较

先将时间类型转化为毫秒(时间戳), 然后根据大小比较

Date date1 = new Date();

Date date2 = new Date();

long date1Long=date1.getTime(); //转为时间戳

long date2Long=date2.getTime();

if (date1Long>date2Long) {

System.out.println("date1在date2之后");

} else if (date2Long>date1Long) {

System.out.println("date2在date1之后");

} else {

System.out.println("date1和date2相等");

}

:

Calendar 类

1,compareTo方法比较

Calendar类的compareTo方法和Date类的用法类似,返回的结果也是一个整数值,表示两个日期的比较结果。

Calendar calendar1 = Calendar.getInstance();//获取日历对象,默认当前时间

calendar1.set(2023,1,1,1,1,1); //为日历对象赋值

Calendar calendar2 = Calendar.getInstance();

calendar2.set(2022,2,2,2,2,2);

int result = calendar1.compareTo(calendar2);

if (result < 0) {

System.out.println("calendar1在calendar2之前");

} else if (result > 0) {

System.out.println("calendar1在calendar2之后");

} else {

System.out.println("calendar1和calendar2相等");

}

:

2,获取当前时间的毫秒值(时间戳)进行比较

语法 : calendar.getTimeInMillis(); 获取毫秒数返回long 在进行比较

Calendar calendar1 = Calendar.getInstance();//获取日历对象,默认当前时间

calendar1.set(2023,1,1,1,1,1); //为日历对象赋值

Calendar calendar2 = Calendar.getInstance();

calendar2.set(2022,2,2,2,2,2);

//获取 时间的毫秒值

long timeInMillis1 = calendar1.getTimeInMillis();

long timeInMillis2 = calendar2.getTimeInMillis();

//比较

if (timeInMillis1 >timeInMillis2 ) {

System.out.println("date1在date2之后");

} else if (timeInMillis2 >timeInMillis1) {

System.out.println("date2在date1之后");

} else {

System.out.println("timeInMillis1和timeInMillis2 相等");

}

:

3,Calendar 加减指定的时间

语法 : calendar.add(Calendar.YEAR, 2);增加年份 等等 +为加 , -为减

Calendar calendar = Calendar.getInstance();//获取日历对象,默认当前时间

calendar.set(2023,7,7,7,7,7); //为日历对象赋值

//把当前的年份增加两年

calendar.add(Calendar.YEAR, 2);

//把当前的月份减少3个月

calendar.add(Calendar.MARCH, -3);

Date date = calendar.getTime();//转成date类型看结果

System.out.println(date);//Wed May 07 07:07:07 CST 2025

:

LocalDateTime 类

在Java 8及以后的版本中,引入了java.time包,其中包含了新的日期和时间API。LocalDateTime是其中的一个类,可以用于表示日期和时间。

1,compareTo方法比较

//获取当前时间

LocalDateTime localDateTime1 = LocalDateTime.now();

LocalDateTime localDateTime2 = LocalDateTime.now();

int result = localDateTime1 .compareTo(localDateTime2 );

if (result < 0) {

System.out.println("localDateTime1 在localDateTime2 之前");

} else if (result > 0) {

System.out.println("localDateTime1 在localDateTime2 之后");

} else {

System.out.println("localDateTime1 和localDateTime2 相等");

}

:

2,isBefore(),isAfter()比较

与date Before(),After() 相似

//获取当前时间

LocalDateTime localDateTime1 = LocalDateTime.now();

LocalDateTime localDateTime2 = LocalDateTime.now();

if (localDateTime1 .isBefore(localDateTime2 )) {

System.out.println("localDateTime1 在localDateTime2 之前");

} else if (localDateTime1 .isAfter(localDateTime2 )) {

System.out.println("localDateTime1 在date2之后");

} else {

System.out.println("localDateTime1 和localDateTime2 相等");

}

:

3,LocalDateTime时间的加减

对于LocalDateTime,则可以进行任意精度的时间相加减; 语法: localDateTime.plusYears (2L) 加减年份 括号里面为long类型

LocalDateTime localDateTime = LocalDateTime.now();

//以下方法的参数都是 long 型,返回值都是 LocalDateTime

// +为加 -为减

LocalDateTime plusYearsResult = localDateTime.plusYears(2L);

LocalDateTime plusMonthsResult = localDateTime.plusMonths(3L);

LocalDateTime plusDaysResult = localDateTime.plusDays(7L);

LocalDateTime plusHoursResult = localDateTime.plusHours(2L);

LocalDateTime plusMinutesResult = localDateTime.plusMinutes(10L);

LocalDateTime plusSecondsResult = localDateTime.plusSeconds(10L);

System.out.println("当前时间是 :"+ localDateTime + "\n" +

"当前时间加2年后为 :" + plusYearsResult + "\n"+

"当前时间加3个月后为 :"+ plusMonthsResult + "\n"+

"当前时间加7日后为 ;"+ plusDaysResult + "\n"+

"当前时间加2小时后为 :"+ plusHoursResult + "\n"+

"当前时间加10分钟后为 :"+ plusMinutesResult + "\n"+

"当前时间加10秒后为 :"+ plusSecondsResult + "\n");

输出结果:

:

4,用 Duration 计算时间间隔

语法 时间1 between 时间2 返回 Duration 类 用 toDays获取天 等

LocalDateTime date1 = LocalDateTime.now();//获取当前时间

LocalDateTime date2 = LocalDateTime.of(2022, 1, 13, 22, 30, 10);//赋值

Duration duration = Duration.between(date2, date1);

System.out.println(date1 + " 与 " + date1 + " 间隔 " + "\n"

+ " 天 :" + duration.toDays() + "\n"

+ " 时 :" + duration.toHours() + "\n"

+ " 分 :" + duration.toMinutes() + "\n"

+ " 毫秒 :" + duration.toMillis() + "\n"

+ " 纳秒 :" + duration.toNanos() + "\n"

);

输出结果:

以上就是全部内容啦,❤️点个赞鼓励鼓励,博主会持续更新,加油