我有一个包含日期和时间信息的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
非常感谢。
答案 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 + "]");
}