世界标准时间格式(yyyy-MM-dd'T'HH:mm:ss.SSS Z)处理

本文介绍了一种处理带有Z时区标记的日期格式(yyyy-MM-dd'T'HH:mm:ss.SSSZ)的方法,通过使用SimpleDateFormat进行解析和重新格式化,适用于需要转换特定时间格式的场景。

        日前在接收他人传递过来的数据时碰到yyyy-MM-dd’T’HH:mm:ss.SSS Z格式的时间数据,因网上相关处理文档较少,所以特此记录一下我的处理方法以便日后翻阅。

 public String timeFormat(String time){
     String tempTime = time.replace("Z", " UTC");
     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS Z");
     Date d = sdf.parse(tempTime);
     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     String str= sdf.format(d);
     return str;
     }

        后面SimpleDataFormat的时间格式可以根据实际业务需要自行调整。

`ObjectMapper` 默认支持 `yyyy-MM-dd'T'HH:mm:ss.SSS` 格式的日期字符串,因为它使用的 `StdDateFormat` 实现类能够兼容 ISO 8601 标准格式。ISO 8601 格式包括类似 `2023-10-05T14:30:00.000` 的表示方式,因此可以直接被 Jackson 解析而无需额外配置[^1]。 如果实体类中的字段类型为 `LocalDateTime`,Jackson 默认会使用 ISO 8601 格式进行序列化和反序列化操作。这意味着对于格式为 `yyyy-MM-dd'T'HH:mm:ss.SSS` 的输入字符串,Jackson 可以正常解析并映射到 `LocalDateTime` 类型的字段上,前提是未对 `ObjectMapper` 做特殊定制修改[^2]。 ### 自定义日期格式以确保兼容性 尽管默认情况下支持 ISO 8601 格式,但为了增强系统的健壮性和兼容性,仍然可以显式地配置 `ObjectMapper` 来支持特定的日期时间格式。例如,在 Spring Boot 应用中可以通过自定义 `Jackson2ObjectMapperBuilderCustomizer` 来设置日期解析格式: ```java @Bean public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() { return builder -> { builder.simpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS"); builder.timeZone(TimeZone.getDefault()); }; } ``` 此外,也可以通过直接注册一个 `JavaTimeModule` 并自定义 `DateTimeFormatter` 来实现更细粒度的控制: ```java ObjectMapper objectMapper = new ObjectMapper(); JavaTimeModule module = new JavaTimeModule(); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS"); module.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(formatter)); objectMapper.registerModule(module); ``` ### 使用注解指定字段格式 如果希望仅针对某个字段应用特定的日期格式,可以在实体类字段上使用 `@JsonFormat` 注解来指定格式: ```java @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS") private LocalDateTime dateTime; ``` 这种方式适用于需要在不同字段上应用不同日期格式的场景,并且不会影响全局的 `ObjectMapper` 配置。 ---
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值