gpt4 book ai didi

说说字符串转 OffSetDateTime 你真的会用吗

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 30 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章说说字符串转 OffSetDateTime 你真的会用吗由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

字符串转 OffSetDateTime 你真的会用

要创建OffsetDateTime ,需要日期 (日,月和年), 时间 (小时,分钟,秒和纳秒)和偏移量 (与UTC的差异).

如果输入只有日期,将会报错. 。

如果只有 日期 小时,分钟和秒,也会报错. 。

因此必须构建其余的,或者假设它们的默认值.

下面是我写好的工具类,拿去用吧:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class OffSetDateTimeConverter {
     private static DateTimeFormatter DATE_FORMAT = new DateTimeFormatterBuilder().appendPattern( "yyyy-MM-dd" )
             .parseDefaulting(ChronoField.HOUR_OF_DAY, 0 )
             .parseDefaulting(ChronoField.MINUTE_OF_HOUR, 0 )
             .parseDefaulting(ChronoField.SECOND_OF_MINUTE, 0 )
             .parseDefaulting(ChronoField.MILLI_OF_SECOND, 0 )
             .parseDefaulting(ChronoField.OFFSET_SECONDS, 0 )
             .toFormatter();
     private static DateTimeFormatter DATE_TIME_FORMAT = new DateTimeFormatterBuilder().appendPattern( "yyyy-MM-dd HH:mm:ss" )
             .parseDefaulting(ChronoField.MILLI_OF_SECOND, 0 )
             .parseDefaulting(ChronoField.OFFSET_SECONDS, 0 )
             .toFormatter();
     public static OffsetDateTime convertDate(String date) {
         if (StringUtils.isBlank(date)) {
             return null ;
         }
         return OffsetDateTime.parse(date, DATE_FORMAT);
     }
     public static OffsetDateTime convertDateTime(String dateTime) {
         if (StringUtils.isBlank(dateTime)) {
             return null ;
         }
         return OffsetDateTime.parse(dateTime, DATE_TIME_FORMAT);
     }
}

上面的工具类保存到数据库会报错, 用下面这个吧

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class OffSetDateTimeConverter {
     /**
      * yyyy-MM-dd
      *
      * @param date
      * @return
      */
     public static OffsetDateTime convertDate(String date) {
         if (StringUtils.isBlank(date)) {
             return null ;
         }
         return LocalDate.parse(date, ISO_LOCAL_DATE).atTime(LocalTime.MIN).atZone(systemDefault()).toOffsetDateTime();
     }
     /**
      * "yyyy-MM-dd HH:mm:ss"
      *
      * @param dateTime
      * @return
      */
     public static OffsetDateTime convertDateTime(String dateTime) {
         if (StringUtils.isBlank(dateTime)) {
             return null ;
         }
         DateTimeFormatter dtf = DateTimeFormatter.ofPattern( "yyyy-MM-dd HH:mm:ss" );
         LocalDateTime localDateTime = LocalDateTime.parse(dateTime, dtf);
         return OffsetDateTime.of(localDateTime, ZoneOffset.UTC);
     }
}

又来更新了,上面方式会有时区问题,用下面的方式解决

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public class OffSetDateTimeConverter {
    
     /**
      * yyyy-MM-dd
      *
      * @param date
      * @return
      */
     public static OffsetDateTime convertDate(String date) {
         if (StringUtils.isBlank(date)) {
             return null ;
         }
         LocalDateTime localDateTime = LocalDateTime.parse(date, DateTimeFormatter.ofPattern( "yyyy-MM-dd" ));
         return OffsetDateTime.of(localDateTime, ZoneId.systemDefault().getRules().getOffset(localDateTime));
     }
     /**
      * "yyyy-MM-dd HH:mm:ss"
      *
      * @param dateTime
      * @return
      */
     public static OffsetDateTime convertDateTime(String dateTime) {
         if (StringUtils.isBlank(dateTime)) {
             return null ;
         }
         LocalDateTime localDateTime = LocalDateTime.parse(dateTime, DateTimeFormatter.ofPattern( "yyyy-MM-dd HH:mm:ss" ));
         return OffsetDateTime.of(localDateTime, ZoneId.systemDefault().getRules().getOffset(localDateTime));
     }
}

OffsetDateTime时间格式转换

可能开发中又碰到OffsetDateTime时间格式,不知道如何转换 。

最简单一招解决:

?
1
2
OffsetDateTime creationTimestamp;
creationTimestamp.format(DateTimeFormatter.ofPattern( "yyyy-MM-dd HH:mm:ss" ))

即可轻松转换为String字符串类型.

OK!问题解决!以上为个人经验,希望能给大家一个参考,也希望大家多多支持我.

原文链接:https://itguang.blog.csdn.net/article/details/110200395 。

最后此篇关于说说字符串转 OffSetDateTime 你真的会用吗的文章就讲到这里了,如果你想了解更多关于说说字符串转 OffSetDateTime 你真的会用吗的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com