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

Java 以我给出的格式获取日期时间,java,calendar,Java,Calendar,我有一个包含日期和时间信息的Java Date对象,例如2010-11-11T09:30:47。我想写一个方法,将这个日期对象转换为以下格式。 “yyyy-MM-dd'HH:MM:ss.SSS'Z” 我编写了以下代码 private Calender getValue(Date dateObject) { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); f

我有一个包含日期和时间信息的Java Date对象,例如2010-11-11T09:30:47。我想写一个方法,将这个日期对象转换为以下格式。 “yyyy-MM-dd'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


非常感谢。

您的日期可能在您的时区中有09:30:47的时间。但您已将日期格式配置为GMT时区。因此,它将显示GMT时区中的时间

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


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

您的日期可能在您的时区中具有09:30:47的时间。但是您将日期格式配置为GMT时区。因此,它将显示GMT时区中的时间

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


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

删除格式化程序.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 + "]");

删除格式化程序.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 + "]");

您只需要删除以下行

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

您只需要删除以下行

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

您的输入时间戳是什么?您确定初始
2010-11-11T09:30:47
是GMT吗?您是否尝试过在创建日期对象之前打印它?看起来您可能必须使用偏移量来使用时区。您的输入时间戳是什么?您确定初始
2010-11-11T09:30:47
是GMT吗?H您是否尝试过在创建日期对象之前打印该对象?看起来您可能必须使用偏移量来使用时区。非常感谢您的回复。我需要“GMT”格式的时区。我尝试了以下代码。Calendar Calendar=Calendar.getInstance(timezone.getTimeZone(“GMT”);Calendar.setTime(源代码);calendar.add(calendar.HOUR,5);calendar.add(calendar.MINUTE,30);它适用于除2010-11-11T24:00:00之外的所有值它正在打印2010-11-12T24:00:00.000Z。我需要GMT格式。非常感谢您的回复。我需要“GMT”格式的时区。我尝试了以下代码。calendar calendar=calendar.getInstance(TimeZone.getTimeZone(“GMT”);calendar.setTime(source);calendar.add(calendar.HOUR,5);calendar.add(calendar.MINUTE,30);它对除2010-11-11T24:00:00:00之外的所有值都有效。它正在打印2010-11-12T24:00:00.000Z。我需要以GMT格式给出。