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

网友投稿 1077 2022-12-21

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

说说字符串转 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 OffsetDhttp://ateTime.of(localDateTime, ZoneId.systemDefault().getRules().getOffset(localDateTime));

}

}

OffsetDateTime时间格式转换

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

最简单一招解决:

OffsetDateTime creationTimestamp;

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

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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:智能手机车载互联系统有哪些(手机智能连接车载系统)
下一篇:flutter培训(flutter如何)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~