Java时间获取、格式化详情


这里先附上后面会用到的进行时间格式化的代码:

    SimpleDateFormat timeSimpleDateFormatter = new SimpleDateFormat("hh:mm:ss");
    SimpleDateFormat daySimpleDateFormatter = new SimpleDateFormat("yyyy-MM-dd");
    SimpleDateFormat dateSimpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

    DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("hh:mm:ss");
    DateTimeFormatter dayFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
    DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");

插一嘴,SimpleDateFormat是非线程安全的,其基于Calendar。而DateTimeFormatter则是线程安全的。
在这里插入图片描述
在这里插入图片描述

java.util.Date

最常用的时间类,也支持格式化

        Date date = new Date();
        System.out.println("date : " + date);
        System.out.println("time : " + timeSimpleDateFormatter.format(date));
        System.out.println("day : " + daySimpleDateFormatter.format(date));
        System.out.println("dateTime : " + dateSimpleDateFormat.format(date));

运行结果如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/68e3fb18aa7c49bd8ae1a6d60bae9938.png

总结:Date原始数据可读性差,需要用到SimpleDateformat进行格式化。能获取年、月、日但是都被弃用了。

java.util.Calendar

由于Date设计的不妥,后面由Calnedar逐步替代。

        Calendar instance = Calendar.getInstance();
        /**
        * 常见用法,获取年月日
        */
        int year = instance.get(Calendar.YEAR);
        int month = instance.get(Calendar.MONTH);
        int day = instance.get(Calendar.DAY_OF_MONTH);

        Date date = instance.getTime();
        System.out.println(instance.toInstant());
        System.out.println("time : " + timeSimpleDateFormatter.format(date));
        System.out.println("day : " + daySimpleDateFormatter.format(date));
        System.out.println("dateTime : " + dateSimpleDateFormat.format(date));

运行结果如下:
在这里插入图片描述
总结:虽然较Date设计更合理,功能更完善,但是性能差,代码冗余,仍旧不推荐使用。

Java8推荐的时间获取方法

LocalDate获取日期

        LocalDate date = LocalDate.now();
        System.out.println("date " + date);
        System.out.println("format " + dayFormatter.format(date));

运行结果如下:
在这里插入图片描述
同时已经提供了很多易读易用的方法:
在这里插入图片描述

LocalTime获取时间


        LocalTime time = LocalTime.now();
        System.out.println("time " + time);
        System.out.println("format " + timeFormatter.format(time));

运行结果如下:
在这里插入图片描述
相对于格式化,多了一个毫秒的数值。

同样提供了很多对时间易读易用的函数:
在这里插入图片描述

LocalDateTime 获取时间和日期

        LocalDateTime datetime = LocalDateTime.now();
        System.out.println(datetime);

        datetime = LocalDateTime.of(date,time);
        System.out.println(datetime);
        System.out.println("format " + dateTimeFormatter.format(datetime));

运行结果如下:
在这里插入图片描述
同样提供了易读易用的方法:
在这里插入图片描述
总结:Java8中的时间函数更完善、性能更好、同时在格式化的时候使用的DateTimeFormatter不会出现线程安全问题,而SimpleDateFormatter会出现安全问题;

后面在补上Java8时间函数怎么对接Mybatis

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值