说说字符串转 OffSetDateTime 你真的会用吗
时间:2022-05-24 09:36:06|栏目:JAVA代码|点击: 次
字符串转 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字符串类型。
上一篇:springboot 项目容器启动后如何自动执行指定方法
栏 目:JAVA代码
下一篇:Google Kaptcha 框架实现登录验证码功能(SSM 和 SpringBoot)
本文标题:说说字符串转 OffSetDateTime 你真的会用吗
本文地址:http://www.codeinn.net/misctech/202741.html


阅读排行
- 1Java Swing组件BoxLayout布局用法示例
- 2Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type异常
- 3Java邮件发送程序(可以同时发给多个地址、可以带附件)
- 4java中-jar 与nohup的对比
- 5Java中自定义异常详解及实例代码
- 6深入理解Java中的克隆
- 7解析SpringSecurity+JWT认证流程实现
- 8java读取excel文件的两种方法
- 9spring boot里增加表单验证hibernate-validator并在freemarker模板里显示错误信息(推荐)
- 10深入解析java虚拟机




