我希望这不是重复。我在这里检查了其他搜索,所有这些搜索似乎都在谈论使用SimpleDateFormat以正确的时区格式"显示"日期。
但是,我的问题是我获得了一个XMLGregorianCalendar对象,让我们在"CET"中说。
我必须从这个对象中找出格式,并在与服务器相同的时区中发送当前时间。
例如:我需要一个XMLGregorianCalendar对象,它以这种格式(时区)返回我:
2012-09-19T15:23:36.421+02:00
所以我只是尝试了以下代码片段,它似乎只返回本地时区的时间:(
TimeZone utc = TimeZone.getTimeZone("CET");
GregorianCalendar gc = new GregorianCalendar();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ssZ");
df.setTimeZone(utc);
System.out.println(" - Gregorian UTC [" + df.format(gc.getTime()) + "]")
XMLGregorianCalendar currServTime = DatatypeFactory.newInstance().newXMLGregorianCalendar(gc);
System.out.println("currServTime is "+currServTime);
你应该在GregorianCalendar
中包含你感兴趣的时区,要么把它传递给构造函数,要么在之后设置它。因此,以下任一行都应该适合您:
GregorianCalendar gc = new GregorianCalendar(utc);
gc.setTimeZone(utc);