我的日期格式爲yyyy-MM-dd'T'HH:mm:ss.SSSZ
,這是生產日期:Java日期偏移格式問題?
2013-10-08T12:14:39.721+0100
但我需要的日期是:
2013-10-08T12:14:39.721+01:00
什麼日期格式將生成一個冒號偏移?
我的日期格式爲yyyy-MM-dd'T'HH:mm:ss.SSSZ
,這是生產日期:Java日期偏移格式問題?
2013-10-08T12:14:39.721+0100
但我需要的日期是:
2013-10-08T12:14:39.721+01:00
什麼日期格式將生成一個冒號偏移?
您可以使用此格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
看一看的doc以獲得更多信息。
P.S: -正如我的朋友@Thomas提到的,這將與的Java 7及以上才能正常工作。
僅僅將其更改爲該格式不起作用?或者你無法更改日期格式? Try:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSXXX");
它應該返回由冒號分隔的最後一部分。
參見:Java SimpleDateFormat Timezone offset with minute separated by colon
如果你想使用SimpleDateFormat可以使用R.J. solution這將爲JDK 7的工作來實現你也可以使用Joda time如下
DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZZ");
String str = fmt.print(dt);
System.out.println(str);
,其輸出實現相同,
2013-10-08T20:36:19.802+09:00
OffsetDateTime.parse("2013-10-08T12:14:39.721+01:00")
.toString()
2013-10-08T12:14:39.721 + 01:00
使用取代了傳統的麻煩日期時間類的現代java.time類。
您需要的輸出格式恰好是OffsetDateTime::toString
方法的默認值。
OffsetDateTime odt = OffsetDateTime.parse("2013-10-08T12:14:39.721+01:00") ;
String output = odt.toString() ;
輸出:2013-10-08T12:14:39.721 + 01:00
見本code run live at IdeOne.com。順便說一下,根據我的經驗,最好的做法是按照UTC問題:中用冒號填充,填充零爲零,並且同時使用小時和分鐘。雖然ISO 8601標準和其他技術上允許變化,但我發現一些庫和協議只需要完全擴展的格式。所以使用+05:00
而不是+05
或+5:00
或+0500
。
只是在這裏得到一個說明,讓我:這適用於Java 7 +。 – Thomas