我在json得到一个日期/时间2011-10-26T20:29:59-07:00
.什么是gsonBuilder.setDateFormat
正确格式化这段时间的正确方法?
Bal*_*usC 95
这-07:00
是ISO 8601时区表示法.SimpleDateFormat
直到Java 7才支持此功能.因此,如果您可以升级到Java 7,那么您可以使用它X
来表示该时区符号:
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ssX").create();
Run Code Online (Sandbox Code Playgroud)
在Java 6上,您需要先进行一些模式匹配并替换JSON字符串-07:00
,然后使用RFC 822表示法替换该部分,-0700
以便您可以使用Z
:
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ").create();
Run Code Online (Sandbox Code Playgroud)
或通过一般时区表示法,GMT-07:00
以便您可以使用z
:
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ssz").create();
Run Code Online (Sandbox Code Playgroud)
Lok*_*oki 11
对于Java 8(尚未验证Java 7),只需使用该模式
yyyy-MM-dd'T'HH:mm:ssXXX
Run Code Online (Sandbox Code Playgroud)
准确地获得格式2011-10-26T20:29:59-07:00
.
时区模式来自Java Date Time - 自定义日期格式模式
Run Code Online (Sandbox Code Playgroud)Zone offset Example: X +09 XX +0930 XXX +09:30 XXX -05:00 XXXX +093045 XXXXX +08:30:45
我的api响应日期格式与您的完全相同,如下所示:
"weather": {
"temperature": 31,
"time": "2016-06-23T09:28:38+08:00"
}
Run Code Online (Sandbox Code Playgroud)
在Android项目中,我使用以下代码,两者都适合我.
Gson gson = new GsonBuilder()
.setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ")
.create();
// or, also work
Gson gson = new GsonBuilder()
.setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ")
.create();
Run Code Online (Sandbox Code Playgroud)
"yyyy-MM-dd'T'HH:mm:ssX"
在Android中不起作用,虽然我已经使用了Java 8 build.gradle
.
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
Run Code Online (Sandbox Code Playgroud)
我们怎么知道我们应该设置的日期格式,实际上你可以从以下源代码中找到答案SimpleDateFormat.java
:
* <p>Which produces this output when run in the America/Los_Angeles time zone:
* <pre>
* yyyy-MM-dd 1969-12-31
* yyyy-MM-dd 1970-01-01
* yyyy-MM-dd HH:mm 1969-12-31 16:00
* yyyy-MM-dd HH:mm 1970-01-01 00:00
* yyyy-MM-dd HH:mmZ 1969-12-31 16:00-0800
* yyyy-MM-dd HH:mmZ 1970-01-01 00:00+0000
* yyyy-MM-dd HH:mm:ss.SSSZ 1969-12-31 16:00:00.000-0800
* yyyy-MM-dd HH:mm:ss.SSSZ 1970-01-01 00:00:00.000+0000
* yyyy-MM-dd'T'HH:mm:ss.SSSZ 1969-12-31T16:00:00.000-0800
* yyyy-MM-dd'T'HH:mm:ss.SSSZ 1970-01-01T00:00:00.000+0000
* </pre>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
37216 次 |
最近记录: |