说说字符串转|说说字符串转 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.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 你真的会用吗】OK!问题解决!以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
推荐阅读
- “不完美,才美”01(190410)
- 流转
- 一起来学习C语言的字符串转换函数
- 【58】转移注意力
- 考前焦虑——接纳情绪,转移注意力
- leetcode|leetcode 92. 反转链表 II
- 视频转换器哪种好用()
- 2018年7月11日|2018年7月11日 星期三 多云转晴(18)
- 说睡
- 以太坊中的计量单位及相互转换