在Java中获取准确的日期而不受时区干扰XMLGregorianCalendar

在Java中获取准确的日期而不受时区干扰XMLGregorianCalendar,java,date,datetime,gregorian-calendar,Java,Date,Datetime,Gregorian Calendar,我有一个XMLGregorianCalendar,我想将其转换为JavaDate对象,但当我尝试转换此对象时: 2013-11-19T00:00:00-00:00 我总是得到一个日期的价值落后一天 Mon Nov 18 17:00:00 MST 2013 我只想要一个日期对象,包含11/19/2013我刚刚做了这个 Date startDate = new Date(request.getStartTime().getYear(), request.getStartTime().getMon

我有一个
XMLGregorianCalendar
,我想将其转换为Java
Date
对象,但当我尝试转换此对象时:

2013-11-19T00:00:00-00:00
我总是得到一个日期的价值落后一天

Mon Nov 18 17:00:00 MST 2013
我只想要一个日期对象,包含
11/19/2013

我刚刚做了这个

Date startDate = new Date(request.getStartTime().getYear(), request.getStartTime().getMonth(), request.getStartTime().getDay(), 0, 0, 0);
我只是这么做了

Date startDate = new Date(request.getStartTime().getYear(), request.getStartTime().getMonth(), request.getStartTime().getDay(), 0, 0, 0);

正如上面所评论的,你得到的结果是正确的——在同一时刻。UTC午夜是前一天下午5点MST。也许你应该看看为什么你的时间是在“-00:00”而不是“-07:00”(MST)。。。但与此同时,我想你可以试试这个:

public static void main(String... args) throws DatatypeConfigurationException {
    XMLGregorianCalendar xcal = DatatypeFactory.newInstance().newXMLGregorianCalendar("2013-11-19T00:00:00-00:00");

    Calendar c = xcal.toGregorianCalendar();
    c.setTimeZone(TimeZone.getDefault());
    Date d = c.getTime();
    System.out.println(d);
}

打印出2013年11月19日星期二00:00:00 EST,并将在一天中的其他时间工作,而不仅仅是午夜。

如上所述,您得到的结果是正确的-这是相同的时间。UTC午夜是前一天下午5点MST。也许你应该看看为什么你的时间是在“-00:00”而不是“-07:00”(MST)。。。但与此同时,我想你可以试试这个:

public static void main(String... args) throws DatatypeConfigurationException {
    XMLGregorianCalendar xcal = DatatypeFactory.newInstance().newXMLGregorianCalendar("2013-11-19T00:00:00-00:00");

    Calendar c = xcal.toGregorianCalendar();
    c.setTimeZone(TimeZone.getDefault());
    Date d = c.getTime();
    System.out.println(d);
}

打印出2013年11月19日星期二00:00:00 EST,并在一天中的其他时间工作,而不仅仅是午夜。

只是提醒一下,我没有办法修改XmlGregorianType。该值不会延迟一天。在同一时刻
2013-11-19T00:00:00-00:00
是UTC午夜,这是您所在时区前一天下午5点的山区标准时间。请注意,我无法修改XmlGregorianType。该值不会延迟一天。在同一时刻
2013-11-19T00:00:00-00:00
是UTC午夜,即您所在时区前一天下午5点的山区标准时间。