Java中如何构建对应2011-05-08T07:33:00.000+05:30格式的DateTimeFormatter?
Java中适配
2011-05-08T07:33:00.000+05:30格式的DateTimeFormatter编写方案 针对你给出的日期时间格式,先拆解各部分对应的DateTimeFormatter模式符号:
2011(四位年份)→yyyy-05(两位月份)→MM-08(两位日期)→ddT(固定分隔符)→'T'(用单引号包裹字面量)07(24小时制小时)→HH:33(两位分钟)→mm:00(两位秒数)→ss.000(三位毫秒)→SSS+05:30(带冒号的时区偏移)→XXX
基于以上对应关系,直接构建DateTimeFormatter即可,代码示例如下:
import java.time.OffsetDateTime; import java.time.format.DateTimeFormatter; public class DateFormatExample { public static void main(String[] args) { // 构建适配目标格式的DateTimeFormatter DateTimeFormatter targetFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"); // 示例1:解析目标格式的字符串为OffsetDateTime String inputDateTime = "2011-05-08T07:33:00.000+05:30"; OffsetDateTime offsetDateTime = OffsetDateTime.parse(inputDateTime, targetFormatter); // 示例2:将OffsetDateTime格式化为目标格式字符串 String formattedDateTime = offsetDateTime.format(targetFormatter); System.out.println(formattedDateTime); // 输出: 2011-05-08T07:33:00.000+05:30 } }
补充说明
- 这里使用
OffsetDateTime是因为目标格式只包含时区偏移量(而非具体时区ID),如果需要处理带时区ID的场景,可以改用ZonedDateTime,该Formatter同样适用。 - 模式中的
XXX专门匹配带冒号的偏移格式(如+05:30),如果是不带冒号的偏移格式(如+0530),则需要替换为XX。
内容的提问来源于stack exchange,提问作者VS J
相关产品推荐
相关产品推荐

