• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

java 搞代码 4年前 (2022-01-05) 30次浏览 已收录 0个评论
文章目录[隐藏]

这篇文章主要介绍了字符串转 OffSetDateTime 你真的会用吗?具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

字符串转 OffSetDateTime 你真的会用

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

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

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

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

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

 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<em style="color:transparent">来源[email protected]搞@^&代*@码网</em>.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); } } 

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

 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); } } 

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

 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时间格式,不知道如何转换

最简单一招解决:

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

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

以上就是说说字符串转 OffSetDateTime 你真的会用吗的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:说说字符串转 OffSetDateTime 你真的会用吗

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址