Java日期时间的比较_加减(date,calendar,localdatetime)

🍔前言🍔
:

在Java编程中,经常需要对时间进行比较和处理。用于比较时间的类有多种,包括Date、Calendar和LocalDateTime等。本文将介绍如何在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"
        );

输出结果:
在这里插入图片描述

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

  • 16
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值