在 Android 上,使用Retrofit 2及其Gson 转换器,您可以将 ISO 8601 字符串"2016-10-26T11:36:29.742+03:00"
(在后端的 JSON 响应中)直接映射到java.util.Date
POJO 中的字段。这开箱即用。
现在,我正在使用ThreeTenABP库(它提供了 java.time 类的反向移植版本),我想知道是否可以将 ISO 时间戳字符串直接映射到更好、更现代的类型,例如OffsetDateTime
or ZonedDateTime
。
在大多数情况下(想想服务器端的 Java 8),显然,从 " 2016-10-26T11:36:29.742+03:00
" 转换为OffsetDateTime
orZonedDateTime
会很简单,因为日期字符串包含时区信息。
我尝试在我的 POJO 中同时使用OffsetDateTime
and ZonedDateTime
(而不是 Date),但至少开箱即用它不起作用。如果您可以使用 Retrofit 2 在 Android 上干净地做到这一点,有什么想法吗?
依赖项:
compile 'com.squareup.retrofit2:retrofit:2.0.2'
compile 'com.squareup.retrofit2:converter-gson:2.0.2'
compile 'com.jakewharton.threetenabp:threetenabp:1.0.4'
构建改造实例:
new Retrofit.Builder()
// ...
.addConverterFactory(GsonConverterFactory.create())
.build();