如何使用ThreeTenABP将java.util.Date转换为ISO格式字符串
使用ThreeTenABP将java.util.Date转换为指定ISO格式字符串
嗨,刚好我在Android项目里用ThreeTenABP处理过一模一样的日期转换需求,给你梳理下具体步骤,超简单的:
第一步:确保项目已引入ThreeTenABP并初始化
如果还没配置依赖,先在你的app模块的build.gradle里添加:
implementation 'com.jakewharton.threetenabp:threetenabp:1.4.0'
然后在你的Application类的onCreate()方法里完成初始化(这步必须做,不然运行时会抛出异常):
@Override public void onCreate() { super.onCreate(); AndroidThreeTen.init(this); }
第二步:核心转换代码
java.util.Date本质上就是一个时间戳,我们只需要把它转换成ThreeTenABP里的Instant(代表UTC时间线上的一个瞬间),再用官方内置的格式化器直接生成目标格式:
// 假设你已经有一个待转换的java.util.Date对象 Date yourDate = new Date(); // 将Date转换为ThreeTenABP的Instant类型 Instant instant = yourDate.toInstant(); // 使用ISO_INSTANT格式化器生成符合要求的字符串 String isoFormattedString = DateTimeFormatter.ISO_INSTANT.format(instant);
这样得到的isoFormattedString就是你要的2018-05-24T02:33:10.062Z这种格式。
额外说明
DateTimeFormatter.ISO_INSTANT是ThreeTenABP内置的格式化器,专门处理UTC时区的ISO 8601格式,自动添加Z后缀(代表Zulu时间,也就是UTC标准时间),还会保留毫秒级精度,完美匹配你的需求。- 不管你的原始
Date对象是基于哪个时区的,toInstant()都会自动转换为UTC时间,所以最终输出的字符串始终是UTC标准格式,完全符合要求。
内容的提问来源于stack exchange,提问作者amlwin
相关产品推荐
相关产品推荐

