好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

说说字符串转 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 你真的会用吗的详细内容...

  阅读:36次