2016-06-21 5 views
-4
geändert.

Ich habe Probleme mit dem unten angegebenen Datum.Das Datum wurde beim Konvertieren von XMLGregorianCalendar in GregorianCalendar

Originaldatum: Jan 2 0001 18:00 PM GMT-5: 00.

Voraussichtliches Datum: Jan. 3 0001 7:00 AM GMT + 8: 00.
Aktuelles Datum: 5. Januar 0001 7:00 Uhr GMT + 8: 00.

public static void main(String[] args) { 
    XMLGregorianCalendar xmlC; 
    try { 
     xmlC = DatatypeFactory.newInstance().newXMLGregorianCalendar(); 
     xmlC.setYear(1); 
     xmlC.setMonth(1); 
     xmlC.setDay(2); // It is Jan 2!! 
     xmlC.setHour(18); 
     xmlC.setMinute(0); 
     xmlC.setSecond(0); 
     xmlC.setMillisecond(0); 
     xmlC.setTimezone(-300); 
     GregorianCalendar gC = xmlC.toGregorianCalendar(); 
     System.out.println(gC.getTime()); // Actual output: Wed Jan 05 07:00:00 CST 1 
    } catch (DatatypeConfigurationException e) { 
     e.printStackTrace(); 
    } 
} 

Können Sie mir bitte dabei helfen? Vielen Dank im Voraus.

+1

http://stackoverflow.com/questions/16321193/date-change-when-converting-from-xmlgregoriancalendar-to-calendar Siehe – nateyolles

+0

BTW, warum Sie verwenden ein Jahr Wert von "0001"? –

Antwort

5

Wie in this answer erläutert, wird Ihr Kalender verschoben werden, weil Sie Ihr Jahr als 1 angegeben haben, was bedeutet, dass dies die GregorianCalendar aus fällt und in den Julianischen Kalender, der XMLGregorianCalendar nicht unterstützt.

Verwenden Sie einfach xmlC.setYear(2016);, um dies zu beheben.

0

versuchen Sie dies in Ihren Code

XMLGregorianCalendar xmlC; 
Calendar cal=Calendar.getInstance(); 
try { 
    xmlC = DatatypeFactory.newInstance().newXMLGregorianCalendar(); 
    xmlC.setYear(cal.get(Calendar.YEAR)); 
    .... 
Verwandte Themen