🍔前言🍔
:
在Java编程中,经常需要对时间进行比较和处理。用于比较时间的类有多种,包括Date、Calendar和LocalDateTime等。本文将介绍如何在Java中比较时间的不同方法,并提供相应的代码示例
java日期时间比较,加减
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"
);
输出结果:
以上就是全部内容啦,❤️点个赞鼓励鼓励,博主会持续更新,加油