2012-03-24 251 views
3

日在這裏我的問題:的Java日期時間格式轉換

String datetime = "2012-03-24 23:20:51"; 

我知道該字符串是在UTC時區。 我需要將此字符串轉換爲格式「yyy-mm-dd'T'HH:mm:ssZ」。

要做到這一點我用下面的代碼:

SimpleDateFormat inFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    inFormatter.setTimeZone(TimeZone.getTimeZone("UTC")); 
    Date inDate = inFormatter.parse(datetime); 
    SimpleDateFormat outFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); 
    outFormatter.setTimeZone(TimeZone.getTimeZone("UTC")); 
    String output = outFormatter.format(inDate); 

的問題是,這個代碼與時區UTC + 1,它給了我結果的服務器上運行的是這樣的:

output = "2012-03-24T21:20:51+0000" 

它從初始時間移除2小時並放置UTC時間戳(0000)。

你能幫我解決這個問題嗎? 謝謝。

+0

我編一個服務器時區 - indipendent代碼 – Bagbyte 2012-03-24 22:53:24

+0

我不能讓你的代碼做...我基本上只有你的代碼有一個簡短但完整的程序,它總是給我正確的價值... – 2012-03-24 22:55:02

回答

2

如果輸出格式是UTC + 1,那麼你應該在格式化器而不是UTC中使用它。

outFormatter.setTimeZone(TimeZone.getTimeZone("UTC+01:00")); 

另外,如果你不希望+0000在年底做然後取出在Z

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