2013-10-08 76 views
2

我的日期格式爲yyyy-MM-dd'T'HH:mm:ss.SSSZ,這是生產日期:Java日期偏移格式問題?

2013-10-08T12:14:39.721+0100 

但我需要的日期是:

2013-10-08T12:14:39.721+01:00 

什麼日期格式將生成一個冒號偏移?

回答

7

您可以使用此格式

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"); 

看一看的doc以獲得更多信息。

P.S: -正如我的朋友@Thomas提到的,這將與的Java 7及以上才能正常工作。

+3

只是在這裏得到一個說明,讓我:這適用於Java 7 +。 – Thomas

0

如果你想使用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 
0

TL組成; dr

OffsetDateTime.parse("2013-10-08T12:14:39.721+01:00") 
       .toString() 

2013-10-08T12:14:39.721 + 01:00

java.time

使用取代了傳統的麻煩日期時間類的現代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