如何正确将String类型转换为OffsetDateTime对象?
正确将String转换为OffsetDateTime的方法
首先纠正你代码里的两个错误:
OffsetDateTime没有公开的无参构造方法,不能直接new OffsetDateTime()创建实例;- 也不存在
new OffsetDateTime(String)这样的构造方法,直接这样写会编译失败。
正确的转换方式需要使用DateTimeFormatter来匹配字符串的日期格式,分两种情况:
1. 字符串是ISO-8601标准格式
如果你的buyDate是符合ISO-8601的格式(比如"2024-05-20T14:30:00+08:00"),可以直接调用OffsetDateTime.parse()方法,默认会使用ISO_OFFSET_DATE_TIME格式化器解析:
String buyDate = "2024-05-20T14:30:00+08:00"; OffsetDateTime purchaseDate = OffsetDateTime.parse(buyDate); objc.setPurchaseDate(purchaseDate);
2. 字符串是自定义格式
如果你的日期字符串是自定义格式(比如"2024-05-20 14:30:00 +0800"),需要先创建对应的DateTimeFormatter,再传入解析方法:
String buyDate = "2024-05-20 14:30:00 +0800"; // 自定义格式匹配字符串,注意时区偏移的占位符要对应 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss Z"); OffsetDateTime purchaseDate = OffsetDateTime.parse(buyDate, formatter); objc.setPurchaseDate(purchaseDate);
注意:解析时如果字符串格式和格式化器不匹配,会抛出DateTimeParseException,需要根据实际情况捕获处理。
内容的提问来源于stack exchange,提问作者Peter Penzov
相关产品推荐
相关产品推荐

