2012-03-24 132 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");