DateTimeFormatter、LocalDateTime 的使用

 由于SimpleDateFormat是线程不安全的,所以在多线程中可以使用线程安全的DateTimeFormatter 代替 SimpleDateFormat。

阿里巴巴java开发手册推荐:如果是 JDK8 的应用,可以使用 Instant 代替 Date,LocalDateTime 代替 Calendar, DateTimeFormatter 代替 SimpleDateFormat。

    public static void main(String[] args) {
        
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss,SSS");
        DateTimeFormatter formatter3 = DateTimeFormatter.ISO_LOCAL_DATE_TIME;   // 2011-12-03T10:15:30
        // LocalDateTime 时间加减
        LocalDateTime nowTime = LocalDateTime.now();
        LocalDateTime plusTime = nowTime.plusSeconds(20);
        LocalDateTime minusTime = nowTime.minusSeconds(20);
        // LocalDateTime自定义时间
        LocalDateTime inputTime = LocalDateTime.of(2019, 6, 30, 13, 59, 59);
        System.out.println("nowTime:"+nowTime);
        System.out.println("plusTime:"+plusTime);
        // LocalDateTime转成String
        System.out.println("minusTime:"+minusTime.format(formatter));
        System.out.println("inputTime:"+inputTime.format(formatter));
        // String 转成LocalDateTime
        LocalDateTime stringToLocalDateTime = LocalDateTime.parse("2019-12-12 12:12:12,222", formatter);
        System.out.println("stringToLocalDateTime:"+stringToLocalDateTime);
        // LocalDateTime 转成Date
        Date toDate = Date.from(plusTime.atZone(ZoneId.systemDefault()).toInstant());
        System.out.println("LocalDateTime to Date:"+toDate);
        // Date 转成LocalDateTime
        LocalDateTime toLocalDateTime = LocalDateTime.ofInstant(toDate.toInstant(), ZoneId.systemDefault());
        System.out.println("Date to LocalDateTime:"+toLocalDateTime);

        
        DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        // LocalDate时间加减
        LocalDate nowDate = LocalDate.now();
        LocalDate plusDays = nowDate.plusDays(10);
        LocalDate minusDays = nowDate.minusDays(10);
        // 自定义日期
        LocalDate inputDate = LocalDate.of(2019, 12, 12);
        // String转成LocalDate
        LocalDate parse = LocalDate.parse("2019-01-01");
        LocalDate parse2 = LocalDate.parse("2019-01-01",formatter2);
        System.out.println("nowDate:"+nowDate);
        System.out.println("plusDays:"+plusDays);
        // LocalDate转成String
        System.out.println("minusDays:"+minusDays.format(formatter2));
        System.out.println("inputDate:"+inputDate.format(formatter2));
        System.out.println("parse:"+parse);
        System.out.println("parse2:"+parse2);
        // LocalDate转Date
        Date date = Date.from(parse2.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());
        System.out.println("date:"+date);
        // Date 转LocalDate
        LocalDate localDate = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()).toLocalDate();
        System.out.println("localDate:"+localDate);
        
        // Date 转LocalTime
        LocalTime localTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()).toLocalTime();
        System.out.println("localTime:"+localTime);
        // ZonedDateTime 
        ZonedDateTime zdt = ZonedDateTime.now();
        System.out.println("ZonedDateTime:"+zdt);
        // Instant 
        Instant ins = Instant.now();
        System.out.println("Instant:"+ins);
    }

运行结果:

nowTime:2019-08-19T22:08:36.484
plusTime:2019-08-19T22:08:56.484
minusTime:2019-08-19 22:08:16,484
inputTime:2019-06-30 13:59:59,000
stringToLocalDateTime:2019-12-12T12:12:12.222
LocalDateTime to Date:Mon Aug 19 22:08:56 CST 2019
Date to LocalDateTime:2019-08-19T22:08:56.484

nowDate:2019-08-19
plusDays:2019-08-29
minusDays:2019-08-09
inputDate:2019-12-12
parse:2019-01-01
parse2:2019-01-01
date:Tue Jan 01 00:00:00 CST 2019
localDate:2019-01-01

localTime:00:00
ZonedDateTime:2019-08-21T09:24:10.781+08:00[Asia/Shanghai]
Instant:2019-08-21T01:24:10.781Z

推荐博文:SimpleDateFormat线程不安全的原因以及解决方案

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值