以我给出的格式获取日期时间

时间:2013-04-23 09:28:15

标签: java calendar

我有一个包含日期和时间信息的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 + "]");

    }

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

  

创建具有日期的GMT校准[2010-11-11T04:00:47.000Z]

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

为什么时间在变化9.30到4.00。

我需要做什么才能得到同样的时间。喜欢2010-11-11T09:30:47.000Z

非常感谢。

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

删除 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 + "]");

答案 2 :(得分: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 + "]");
}