Java日期时间格式转换

3
日期:这里是我的问题:
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)放置其中。

请问您能帮我解决这个问题吗? 谢谢。


我需要编写一个与服务器时区无关的代码。 - Bagbyte
我无法让你的代码做到那样... 我有一个简短但完整的程序,基本上只有你的代码,它总是为我提供正确的值... - Jon Skeet
1个回答

2
如果输出格式为UTC+1,则应在outformatter中使用UTC+1,而不是UTC。
outFormatter.setTimeZone(TimeZone.getTimeZone("UTC+01:00"));

此外,如果您不想在末尾看到+0000,则可以删除Z。
SimpleDateFormat outFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接