java ISO 8601 日期格式进行转换

ISO 8601 日期格式进行转换

痛点

懂的都懂,烦死啦!嘤嘤嘤。

时间是让人猝不及防的东西,有时天晴,有时雨。如果时间有个倒退时光的API,我愿意回到原始社会,那里没有汽车,没有高楼,没有电脑,更不会有让人将时间转换为各种时间格式的需求,每天过着简单的生活,早上起来,先去看下昨天做的陷阱,有没有猎物掉进去,中午在树荫下沉思,手里搞几个水果,没事啃两口,傍晚看着夕阳,吹着晚风,围坐在篝火旁,忆往昔,峥嵘岁月稠,虽然可能也许大概maybe上顿吃了不晓得下一顿在哪里,也无妨,毕竟大家都一样。

方案一(不好用)

  1. pom.xml引入joda-time

    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>2.9.9</version>
    </dependency>
    
  2. Date类型转yyyy-MM-dd'T'HH:mm:ss字符串

    @Test
    public void test1() {
        //当前时间转IS0 8601   
        TimeZone tz = TimeZone.getTimeZone("GMT-01");
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
        df.setTimeZone(tz);
        String nowAsISO = df.format(new Date());
        System.err.println(nowAsISO);
    }
    
  3. IS0 8601字符串转为JDK包中的java.time.LocalDateTime对象,为什么要转jdk里的对象,因为不转,我保存不进mysql数据库鸭,烦死辣

    @Test
    public void test2() {
        String d = "2018-05-14T03:51:50Z";
        DateTimeFormatter parser2 = ISODateTimeFormat.dateTimeNoMillis();
        DateTime dateTime = parser2.parseDateTime(d);
        long millis = dateTime.getMillis();
    //        long millis = dateTime.getMillis()/1000;
    //        java.time.LocalDateTime localDateTime = java.time.LocalDateTime.ofEpochSecond(millis, 0, ZoneOffset.ofHours(8));
        java.time.LocalDateTime localDateTime = Instant.ofEpochMilli(millis).atZone(ZoneOffset.ofHours(8)).toLocalDateTime();
        System.out.println(localDateTime);
    }
    

方案二(hutool yyds)

  1. pom.xml引入依赖

    <dependency>
        <groupId>cn.hutool</groupId>
        <artifactId>hutool-all</artifactId>
        <version>5.7.20</version>
    </dependency>
    
  2. 字符串转日期

    DateUtil.parse方法会自动识别一些常用格式,包括:

yyyy-MM-dd HH:mm:ss

yyyy/MM/dd HH:mm:ss
yyyy.MM.dd HH:mm:ss
yyyy年MM月dd日 HH时mm分ss秒
yyyy-MM-dd
yyyy/MM/dd
yyyy.MM.dd
HH:mm:ss
HH时mm分ss秒
yyyy-MM-dd HH:mm
yyyy-MM-dd HH:mm:ss.SSS
yyyyMMddHHmmss
yyyyMMddHHmmssSSS
yyyyMMdd
EEE, dd MMM yyyy HH:mm:ss z
EEE MMM dd HH:mm:ss zzz yyyy
yyyy-MM-dd'T'HH:mm:ss'Z'
yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
yyyy-MM-dd'T'HH:mm:ssZ
yyyy-MM-dd'T'HH:mm:ss.SSSZ
String d = "2018-05-14T03:51:50Z";
Date date = DateUtil.parse(d);;

LocalDateTimeyyyy-MM-dd'T'HH:mm:ss.SSS'Z'

DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
LocalDateTime localDateTime =LocalDateTime.now();
Date date = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
String format = DateUtil.format(date, df);
System.err.println(format);
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

木一番

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

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

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

打赏作者

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

抵扣说明:

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

余额充值