5hutool实战:DateUtil-解析被格式化的时间

5hutool实战:DateUtil-解析被格式化的时间

hutool实战(带你掌握里面的各种工具)目录

万字博文教你搞懂java源码的日期和时间相关用法


用途:格式化时间

使用场景

把日期按照不同的需求格式化成对应的日期字符串

项目引用

此博文的依据:hutool-5.6.5版本源码5hutool实战:DateUtil-解析被格式化的时间

方法摘要

5hutool实战:DateUtil-解析被格式化的时间5hutool实战:DateUtil-解析被格式化的时间方法明细

方法名称:cn.hutool.core.date.DateUtil.parseLocalDateTime(java.lang.CharSequence)

方法描述

构建LocalDateTime对象


格式:yyyy-MM-dd HH:mm:ss


支持版本及以上

参数描述:5hutool实战:DateUtil-解析被格式化的时间5hutool实战:DateUtil-解析被格式化的时间5hutool实战:DateUtil-解析被格式化的时间

返回值:

DateTime对象

参考案例:

        String dateStr = "Wed Sep 16 11:26:23 CST 2009";

        SimpleDateFormat sdf = new SimpleDateFormat(DatePattern.JDK_DATETIME_PATTERN, Locale.US);
        sdf.setTimeZone(TimeZone.getTimeZone("America/Chicago"));
        final DateTime parse = DateUtil.parse(dateStr, sdf);

        FastDateFormat fdf = FastDateFormat.getInstance(DatePattern.JDK_DATETIME_PATTERN, TimeZone.getTimeZone("America/Chicago"), Locale.US);
        final DateTime parse2 = DateUtil.parse(dateStr, fdf);

        Assert.assertEquals(parse, parse2);

5hutool实战:DateUtil-解析被格式化的时间5hutool实战:DateUtil-解析被格式化的时间5hutool实战:DateUtil-解析被格式化的时间

参考案例:

        String ymd = DateUtil.parse("2021-05-16 21:20:15", "yyyy-MM-dd",Locale.US).toString(DatePattern.PURE_DATE_PATTERN);
        Assert.assertEquals("20210516", ymd);

5hutool实战:DateUtil-解析被格式化的时间

        String ymd = DateUtil.parse("2021-05-16 21:20:15", "yyyy/MM/dd HH:mm:ss","yyyy.MM.dd HH:mm:ss","yyyy-MM-dd HH:mm:ss").toString(DatePattern.PURE_DATE_PATTERN);
        Assert.assertEquals("20210516", ymd);

5hutool实战:DateUtil-解析被格式化的时间5hutool实战:DateUtil-解析被格式化的时间5hutool实战:DateUtil-解析被格式化的时间5hutool实战:DateUtil-解析被格式化的时间

参考案例:

        String dateStr1 = "2018-09-13T05:34:31Z";
        DateTime dt = DateUtil.parseUTC(dateStr1);

        // parse方法支持UTC格式测试
        DateTime dt2 = DateUtil.parse(dateStr1);
        Assert.assertEquals(dt, dt2);

        // 默认使用Pattern对应的时区,即UTC时区
        String dateStr = dt.toString();
        Assert.assertEquals("2018-09-13 05:34:31", dateStr);

        // 使用当前(上海)时区
        dateStr = dt.toString(TimeZone.getTimeZone("GMT+8:00"));
        Assert.assertEquals("2018-09-13 13:34:31", dateStr);

        dateStr1 = "2018-09-13T13:34:32+0800";
        dt = DateUtil.parseUTC(dateStr1);
        dateStr = dt.toString(TimeZone.getTimeZone("GMT+8:00"));
        Assert.assertEquals("2018-09-13 13:34:32", dateStr);

        dateStr1 = "2018-09-13T13:34:33+08:00";
        dt = DateUtil.parseUTC(dateStr1);
        dateStr = dt.toString(TimeZone.getTimeZone("GMT+8:00"));
        Assert.assertEquals("2018-09-13 13:34:33", dateStr);

        dateStr1 = "2018-09-13T13:34:34+0800";
        dt = DateUtil.parse(dateStr1);
        assert dt != null;
        dateStr = dt.toString(TimeZone.getTimeZone("GMT+8:00"));
        Assert.assertEquals("2018-09-13 13:34:34", dateStr);

        dateStr1 = "2018-09-13T13:34:35+08:00";
        dt = DateUtil.parse(dateStr1);
        assert dt != null;
        dateStr = dt.toString(TimeZone.getTimeZone("GMT+8:00"));
        Assert.assertEquals("2018-09-13 13:34:35", dateStr);

        dateStr1 = "2018-09-13T13:34:36.999+0800";
        dt = DateUtil.parseUTC(dateStr1);
        final SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DatePattern.NORM_DATETIME_MS_PATTERN);
        simpleDateFormat.setTimeZone(TimeZone.getTimeZone("GMT+8:00"));
        dateStr = dt.toString(simpleDateFormat);
        Assert.assertEquals("2018-09-13 13:34:36.999", dateStr);

        dateStr1 = "2018-09-13T13:34:37.999+08:00";
        dt = DateUtil.parseUTC(dateStr1);
        dateStr = dt.toString(simpleDateFormat);
        Assert.assertEquals("2018-09-13 13:34:37.999", dateStr);

        dateStr1 = "2018-09-13T13:34:38.999+0800";
        dt = DateUtil.parse(dateStr1);
        assert dt != null;
        dateStr = dt.toString(simpleDateFormat);
        Assert.assertEquals("2018-09-13 13:34:38.999", dateStr);

        dateStr1 = "2018-09-13T13:34:39.999+08:00";
        dt = DateUtil.parse(dateStr1);
        assert dt != null;
        dateStr = dt.toString(simpleDateFormat);
        Assert.assertEquals("2018-09-13 13:34:39.999", dateStr);

        // 使用UTC时区
        dateStr1 = "2018-09-13T13:34:39.99";
        dt = DateUtil.parse(dateStr1);
        assert dt != null;
        dateStr = dt.toString();
        Assert.assertEquals("2018-09-13 13:34:39", dateStr);

5hutool实战:DateUtil-解析被格式化的时间5hutool实战:DateUtil-解析被格式化的时间方法明细

方法名称:cn.hutool.core.date.DateUtil.parse(java.lang.CharSequence)

方法描述

将日期字符串转换为{@link DateTime}对象,格式:


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

支持版本及以上

参数描述:5hutool实战:DateUtil-解析被格式化的时间


上一篇:30分钟上手HaaS钉钉小程序开发


下一篇:去掉IE10、IE11的默认文本框样式