服务器之家

服务器之家 > 正文

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

时间:2021-11-05 09:56     来源/作者:PostTruth

字符串转 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

相关文章

热门资讯

2022年最旺的微信头像大全 微信头像2022年最新版图片
2022年最旺的微信头像大全 微信头像2022年最新版图片 2022-01-10
蜘蛛侠3英雄无归3正片免费播放 蜘蛛侠3在线观看免费高清完整
蜘蛛侠3英雄无归3正片免费播放 蜘蛛侠3在线观看免费高清完整 2021-08-24
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
暖暖日本高清免费中文 暖暖在线观看免费完整版韩国
暖暖日本高清免费中文 暖暖在线观看免费完整版韩国 2021-05-08
返回顶部