使用Gson将JSON转POJO时丢失时间戳的问题求助
Gson解析java.util.Date丢失时间戳的问题原因与修复方案
问题原因
你的Gson日期格式配置"yyyy-MM-dd'T'HH:mm:ss.S'Z'"强制要求日期字符串包含毫秒段(.S),但JSON中的目标日期"2021-12-01T07:16:31Z"并没有毫秒部分,格式不匹配导致Gson解析时仅识别了日期部分,丢弃了时分秒信息。
修复方案
有两种可行的调整方式:
- 兼容有无毫秒的通用格式:使用方括号标记可选的毫秒段,这样既可以解析带毫秒的日期,也能处理不带毫秒的场景:
Gson gson = new GsonBuilder() .setDateFormat("yyyy-MM-dd'T'HH:mm:ss[.S]'Z'") .create(); - 匹配目标日期的精确格式:如果确定所有待解析的日期都不带毫秒,直接去掉格式中的
.S部分:Gson gson = new GsonBuilder() .setDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'") .create();
补充说明
java.util.Date对象本身是存储完整时间戳的,问题本质是格式字符串与输入日期不匹配导致解析不完整,调整格式后即可正确读取包含时分秒的完整时间信息。
内容的提问来源于stack exchange,提问作者Loren
相关产品推荐
相关产品推荐

