java基础【date类】

本文详细介绍了Java中时间处理的各种方式,包括System.currentTimeMillis()的使用、Date类的转换、Calendar类的操作,以及Java 8引入的LocalDate、LocalTime和LocalDateTime类。通过实例演示了如何获取当前时间、格式化日期、设置和修改时间,以及使用新API进行日期计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、自1970-01-01 00:00:00.000到方法执行一瞬间经过的毫秒数

此方法多用于计算时间差

    @Test
    public void test1(){
        long currentTimeMillis = System.currentTimeMillis();
        System.out.println(currentTimeMillis);
    }

2、Date类

        Date date = new Date();
        System.out.println(date);

        //将日期转化为容易看懂的数据
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");    //声明日期格式化器
        String format = simpleDateFormat.format(date);      //根据格式化器将日期转化
        System.out.println(format);

其中格式化器“”中的格式何以任意填写。

3、将日期字符串转化为Date类

         //将日期字符串转化为Date类
        String string = "2022-12-11 10:20:50";
        try {
            Date parse = simpleDateFormat.parse(string);
            String format1 = simpleDateFormat.format(parse);
            System.out.println(format1);
        } catch (ParseException e) {
            e.printStackTrace();
        }

        //格式化毫秒值
        String format1 = simpleDateFormat.format(currentTimeMillis);    //格式化毫秒
        System.out.println(format1);

4、Calendar类

Calendar是一个抽象类,并且没有子类,只能通过单例创建对象。

获取当前时间

        Calendar calendar = Calendar.getInstance();
        System.out.println(calendar);
        int year = calendar.get(Calendar.YEAR);
        System.out.println(year);
        int month = calendar.get(Calendar.MONTH); //比实际值小1
        System.out.println(month);
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println(day);

设置时间:底层实现其实是对数组进行操作

        calendar.set(Calendar.YEAR,2002);
        calendar.set(Calendar.MONTH,10);
        calendar.set(Calendar.DAY_OF_MONTH,8);
        System.out.println(calendar.getTime());

修改时间

        calendar.add(Calendar.YEAR,-19);
        calendar.add(Calendar.MONTH,10);
        calendar.add(Calendar.DAY_OF_MONTH,39);
        System.out.println(calendar.getTime());

练习:获取当前日期对象,将其改成自己的生日,并推算自己的百天

     @Test
    public void exer(){
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.YEAR,1988);
        calendar.set(Calendar.MONTH,5);
        calendar.set(Calendar.DAY_OF_MONTH,20);
        System.out.println(calendar.getTime());

        calendar.add(Calendar.DAY_OF_MONTH,100);
        System.out.println(calendar.getTime());
    }

总结:

Calendar类的操作不符合人类的习惯,并且对象不安全,因为可以随意修改数据。

5、java8中新的API LocalDate、LocalTime、LocalDateTime

一旦创建不能够修改,如果修改,那么会生成新的对象。

LocalDate:

获取时间:

    @Test
    public void test3(){
        LocalDate now = LocalDate.now();
        System.out.println(now);
        int year = now.getYear();
        int month = now.getMonthValue();
        int dayOfMonth = now.getDayOfMonth();
        System.out.println(year + " " + month + " " + dayOfMonth);
    }

修改时间

        //修改时间 2002 11 8
        LocalDate withYear = now.withYear(2002);
        System.out.println(withYear);
        LocalDate withMonth = withYear.withMonth(11);
        System.out.println(withMonth);
        LocalDate withDay = withMonth.withDayOfMonth(8);
        System.out.println(withDay);

或者  

        LocalDate newDate = now.withYear(2002).withMonth(12).withDayOfMonth(15);
        System.out.println(newDate);

增加时间:

        LocalDate newDate1 = newDate.plusDays(100);
        System.out.println(newDate1);

使用新API完成上面练习

    @Test
    public void test4(){
        LocalDate now = LocalDate.now();
        System.out.println(now);
        LocalDate myBir = now.withYear(1563).withMonth(12).withDayOfMonth(20);
        System.out.println(myBir);
        LocalDate baiTian = myBir.plusDays(200);
        System.out.println(baiTian);
    }

5、LocalTime类

获取当前时间,获取时间,修改时间

    @Test
    public void test5(){
        LocalTime time = LocalTime.now();
        System.out.println(time);

        int hour = time.getHour();
        System.out.println(hour);

        LocalTime time1 = time.withHour(14);
        System.out.println(time1);
    }

6、LocalDateTime类

获取日期时间,使用格式化器,获取、更改时间

 @Test
    public void test6(){
        LocalDateTime dateTime = LocalDateTime.now();
        System.out.println(dateTime);
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH-mm-ss");
        System.out.println(dtf.format(dateTime));

        System.out.println(dateTime.getHour());

        LocalDateTime dateTime1 = dateTime.withHour(23);
        System.out.println(dateTime1);
    }

根据指定时间创建日期

    @Test
    public void test7(){
        LocalDateTime dateTime = LocalDateTime.of(2008,8,8,8,8,7);
        System.out.println(dateTime);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

OneTenTwo76

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值