iava日期加减(Date、SimpleDateFormat、LocalDateTime)

目录

用java.text.SimpleDateFormat和java.util.Date来实现

java.util.Date时间类型

用Calendar来实现

什么是Calendar?

​编辑

LocalDateTime时间:

为什么使用LocalDateTime?

使用with方法直接修改时间:


前言

        我们在编写代码时会对时间进行处理加减,我们在这里讲解几种时间类型的加减     

用java.text.SimpleDateFormat和java.util.Date来实现

java.util.Date时间类型

java.util.Date是Java中常用的日期类型之一,用于表示特定的日期和时间。它包含日期和时间的信息,并可以进行日期的计算和操作。在SQL中,我们可以使用java.util.Date类型存储日期,并将其插入到数据库中

代码展示

   Date d=new Date();  
   SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");  
   System.out.println("今天的日期:"+df.format(d));  
   System.out.println("两天前的日期:" + df.format(new Date(d.getTime() - 2 * 24 * 60 * 60 * 1000)));  
   System.out.println("三天后的日期:" + df.format(new Date(d.getTime() + 3 * 24 * 60 * 60 * 1000)));

运行结果

用Calendar来实现

什么是Calendar?

Calendar 类是 Java 中用于处理日期和时间的抽象类。它提供了一种独立于特定日历系统的方式来处理日期和时间。通过 Calendar 类,你可以执行许多常见的日期和时间操作,如计算日期差异、添加或减去时间单位等。

Calendar calendar=Calendar.getInstance();



  //把当前年份设置为2050年
        calendar.set(Calendar.YEAR,2050);
        //获取年份
        int year =calendar.get(Calendar.YEAR);
        System.out.println("年"+year);

        //把当前月份设置为5月
        calendar.set(Calendar.MONTH,5);
        //再次获取月份
        int month=calendar.get(Calendar.MONTH);
        System.out.println("月"+month);

        //设置日期为5
        calendar.set(Calendar.DATE,5);
        int date=calendar.get(Calendar.DATE);
        System.out.println("日期"+date);

        //把当前的年份增加两年
        calendar.add(Calendar.YEAR,2);
        //把当前的月份减少3个月
        calendar.add(Calendar.MONTH,-3);
        //获取
        int year1=calendar.get(Calendar.YEAR);
        int month1=calendar.get(Calendar.MONTH);
        int date1=calendar.get(Calendar.DATE);
        System.out.println("加2年减3个月");
        System.out.println(year1+"年"+month1+"月"+date1+"日");

运行结果: 

LocalDateTime时间:

为什么使用LocalDateTime?

  • 和 SimpleDateFormat 相比,DateTimeFormatter 是线程安全的。
  • Instant 的精确度更高,可以精确到纳秒级。
  • Duration 可以便捷得到时间段内的天数、小时数等。
  • LocalDateTime 能够快速地获取年、月、日、下一月等。
  • TemporalAdjusters 类中包含许多常用的静态方法,避免自己编写工具类。
  • 线程安全,计算功能强大,并且性能更好,代码更简洁。
import java.time.LocalDate;
import java.time.Period;
import java.util.ArrayList;
public class boke {
    public static void main(String[] args) {
        //先创建LocalDate对象
        LocalDate localDate1 = LocalDate.of(2020, 1, 1);
        LocalDate localDate2 = LocalDate.of(2022, 1, 1);
        //再使用Period调用between方法,传给Period对象
        Period period = Period.between(localDate1, localDate2);
        //再使用period对象调用获取相应时间的方法
        //获取相差的年份
        int periodYears = period.getYears();
        //获取相差的月份
        int periodMonths = period.getMonths();
        //获取相差的天数
        int periodDays = period.getDays();
        System.out.println("相差" + periodYears + "年" + periodMonths + "月" + periodDays + "日");
    }
}

运行结果

使用with方法直接修改时间:
public static void main(String[] args) {
        //先创建一个LocalDateTime对象:2021,11,11,13:14:15
        LocalDateTime localDateTime = LocalDateTime.of(2021, 11, 11, 13, 14, 15);
        //调用withYear()方法,参数传入想要修改成的时间,这里修改年份为2022
        LocalDateTime newLocalDateTime1 = localDateTime.withYear(2022);
        //再格式化一下
        DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String s = newLocalDateTime1.format(pattern);
        System.out.println(s);
    }

运行结果:2022-11-11 13:14:15

方法名说明
publicLocalDateTime withYear(int year)直接修改年
publicLocalDateTime withMonth(int month)直接修改月
public LocalDateTime withDayOfMonth(int dayofmonth)直接修改日期(—个月中的第几天)
public LocalDateTime withDayOfYear(int dayOfYear)直接修改日期(一—年中的第几天)
public LocalDateTime withHour(int hour)直接修改小时
public LocalDateTime withMinute(int minute)直接修改分钟
public LocalDateTime withSecond(int second)直接修改秒

LocalDateTime增加或者减少时间的方法

    public static void main(String[] args) {
        //先创建一个LocalDateTime对象:2020,5,5,12:12:15
        LocalDateTime localDateTime = LocalDateTime.of(2020, 5, 5, 12, 12, 15);
        //用对象调用plusYears方法(也可以调用月、日、小时等等的方法)

        LocalDateTime newLocalDateTime = localDateTime.plusYears(1);
        //再格式化一下
        DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
        String s = newLocalDateTime.format(pattern);
        System.out.println(s);
    }

运行结果: 2021年05月05日 12:12:15

总结到这里,有什么可以在评论区进行补充!

  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值