0

我有一个包含日期和时间信息的 Java Date 对象,例如 2010-11-11T09:30:47。我想编写一个方法,将此 Date 对象转换为以下格式。“yyyy-MM-dd'T'HH:mm:ss.SSS'Z'

我写了以下代码。

    private Calender getValue(Date dateObject) {
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
    formatter.setTimeZone(TimeZone.getTimeZone("GMT"));

    String timestamp = formatter.format(dateObject);

    System.out.println("Created GMT cal with date [" + timestamp + "]");

    }

当我运行程序时,它正在打印

使用日期 [2010-11-11T04:00:47.000Z] 创建 GMT 校准

我给的是“2010-11-11T09:30:47”,我的时间是 09:30:47。它正在打印的是“04:00:47”。

为什么时间会从 9.30 变为 4.00。?

我需要做什么才能获得与我付出相同的时间。喜欢 2010-11-11T09:30:47.000Z

非常感谢。

4

3 回答 3

1

Remove formatter.setTimeZone(TimeZone.getTimeZone("GMT"));

  SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
  String timestamp = formatter.format(new Date());
  System.out.println("Created GMT cal with date [" + timestamp + "]");
于 2013-04-23T09:37:14.183 回答
1

您所在时区的日期可能是 09:30:47 。但是您将日期格式配置为 GMT 时区。所以它显示的是 GMT 时区的时间。

如果您使用其他日期格式来解析输入字符串并获取 Date 对象,请确保此其他日期格式也使用 GMT 时区。

要获得更多帮助,请向我们展示如何创建传递给您的方法的 Date 对象。

于 2013-04-23T09:32:57.630 回答
1

您只需要删除以下行

formatter.setTimeZone(TimeZone.getTimeZone("GMT"));

因为您将时区设置为 GMT,而您的时区是 GMT + 5.30。这就是当您将时间设置为 9.30 时,您将得到9.30 - 5.30 = 4.00的原因。

您可以使用以下代码:

private void getValue(Date dateObject) 
{
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
    String timestamp = formatter.format(dateObject);
    System.out.println("Created GMT cal with date [" + timestamp + "]");
}
于 2013-04-23T09:43:11.173 回答