时间格式转化

​​​​​​​​​​​​​​​​​​​1 String 类型的"yyyy-MM-dd'T'HH:mm:ss"如何把T格式化。先转Date类型,在格式化date类型 。

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            Date date = sdf.parse("2020-08-06T14:04:08");
            String dateTime = sdf2.format(date);
            log.info(dateTime);
        } catch (ParseException e) {
            e.printStackTrace();
        }​​​​​​​​​​​​​​​​​​​​
2 localdatetime的with方法,重新定义时间
        // localdatetime的with方法,重新定义时间
        LocalDateTime now = LocalDateTime.now();
        log.info(now.toString());
        LocalDateTime test = now.withHour(8).withMinute(9).withMonth(7);
        log.info(test.toString());

打印结果 :2020-08-27T09:59:24.505
                   2020-07-27T08:09:24.505

3 insant

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
        // localdatetime获取当天北京时间
        LocalDateTime localDateTime = LocalDateTime.now();
        log.info("localdatetime获取当天北京时间:" + localDateTime.toString());
        // Instant获取当前时间为utc时间,比北京时间晚8个小时
        Instant instant = Instant.now();
        log.info("Instant 获取当前时间为utc时间,比北京时间晚8个小时:" + instant.toString());
        // Instant转换成北京时间
        Instant beijingInstant = instant.plusMillis(TimeUnit.HOURS.toMillis(8));
        log.info("Instant 转换成北京时间:" + beijingInstant.toString());
        // Instant 换换乘10位秒数和13位毫秒数
        Long second = instant.getEpochSecond();
        Long milli = instant.toEpochMilli();
        Long beijingmilli = beijingInstant.toEpochMilli();
        log.info("Instant 转换成10位秒数:" + second.toString());
        log.info("Instant 转换成和13位毫秒数:" + milli.toString());
        log.info("北京时间的instant:" + beijingmilli.toString());
        // localdatetime转换为long类型的毫秒(通过instant转成UTC时间的毫秒,比北京时间晚8小时)
        Long epochmilli = localDateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
        log.info("localdatetime转换为long类型的毫秒:" + epochmilli.toString());
        // localdatetime转换成instant
        Instant instant1 = localDateTime.toInstant(ZoneOffset.of("+8"));
        Instant instant2 = localDateTime.toInstant(ZoneOffset.ofHours(-8));
        log.info("localdatetime转换成instant 转换方式一:" + instant1);
        log.info("localdatetime转换成instant 转换方式二:" + instant2);
        // instant转换成Localdatetime 转换成系统默认时区
        LocalDateTime localDateTime1 = LocalDateTime.ofInstant(instant1, ZoneId.systemDefault());
        log.info("instant转换成Localdatetime:" + localDateTime1);
        // long转换为时间 long类型默认是utc的时间,转换成date自动+8
        Date date = new Date(beijingmilli);
        String dateString = sdf.format(date);
        log.info("long转换为时间:" + dateString);
        //influxdb取出的"yyyy-MM-dd'T'HH:mm:ss"转换为localdatetime
        String influxdbDate = "2020-08-27T08:00:00+08:00";
        DateTimeFormatter rfc3339 = new DateTimeFormatterBuilder()
                .appendPattern("yyyy-MM-dd'T'HH:mm:ss")
                .appendFraction(ChronoField.NANO_OF_SECOND, 0, 9, true)
                .appendZoneOrOffsetId().toFormatter();
        LocalDateTime dateTime = LocalDateTime.parse(influxdbDate, rfc3339);
        log.info("influxdb取出的\"yyyy-MM-dd'T'HH:mm:ss\"转换为localdatetime" + dateTime);

打印结果: 

localdatetime获取当天北京时间:2020-08-27T16:23:29.289
Instant 获取当前时间为utc时间,比北京时间晚8个小时:2020-08-27T08:23:29.289Z
Instant 转换成北京时间:2020-08-27T16:23:29.289Z
Instant 转换成10位秒数:1598516609
Instant 转换成和13位毫秒数:1598516609289
北京时间的instant:1598545409289
localdatetime转换为long类型的毫秒:1598516609289
localdatetime转换成instant 转换方式一:2020-08-27T08:23:29.289Z
localdatetime转换成instant 转换方式二:2020-08-28T00:23:29.289Z
instant转换成Localdatetime:2020-08-27T16:23:29.289
long转换为时间:2020-08-28 00:23:29.289
influxdb取出的"yyyy-MM-dd'T'HH:mm:ss"转换为localdatetime2020-08-27T08:00

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值