localdatetime 格式化_LocalDateTime取代Data处理时间问题

Java8开始, JDK中其实就增加了一系列表示日期和时间的新类,最典型的就是 LocalDateTime。直言不讳,这玩意的出现就是为了干掉之前 JDK版本中的 Date老哥!

同样,我们也先来感受一下用法!

一、获取当前此刻的时间

 * 测试LocalDateTime的用法
 */
public class LocalDateTimeTest {

    public static void main(String[] args) {
        LocalDateTime localDateTime = LocalDateTime.now();
        System.out.println("当前年份:" + (localDateTime.getYear()-4)); // 2020
        System.out.println("当前日份:" + localDateTime.getDayOfMonth()); // 11
        System.out.println("--------------------");
        String result1 = localDateTime.format(DateTimeFormatter.ISO_DATE);
        String result2 = localDateTime.format(DateTimeFormatter.BASIC_ISO_DATE);
        String result3 = localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd 00:00:00"));

        System.out.println("格式化后的日期result1:" + result1);
        System.out.println("格式化后的日期result2:" + result2);
        System.out.println("格式化后的日期result3:" + result3);
    }
}

测试结果:

f18e7a35b2e8d36b9d09f5723d2c4ce9.png

二、线程安全性问题

其实以前我们惯用的 Date时间类是可变类,这就意味着在多线程环境下对共享 Date变量进行操作时,必须由程序员自己来保证线程安全!否则极有可能翻车

而自 Java8开始推出的 LocalDateTime却是线程安全的,开发人员不用再考虑并发问题,这点我们从 LocalDateTime的官方源码中即可看出:

f82e2cedcd2c08cbc05fe96e6bd2c510.png

三、日期格式化的选择

大家除了惯用 Date来表示时间之外,还有一个用于和 Date连用的 SimpleDateFormat 时间格式化类大家可能也戒不掉了!

SimpleDateFormat最主要的致命问题也是在于它本身并不线程安全,这在它的源码注释里已然告知过了:

bdba71a67b4106d8d6c649a80637be25.png

那取而代之,我们现在改用什么呢?其实在前文已经用到啦,那就是了 DateTimeFormatter了,他也是线程安全的:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值