Lavorando su progetti java e con tecnologia webservice, avrai sicuramente avuto che fare con l’oggetto XMLGregorianCalendar. Quest’oggetto porta con se informazioni relative a data, ora e fuso orario.
Se sei arrivato su questa pagina è perchè, con molta probabilità, ti interessa inviare la stringa della data come yyyy-MM-dd e non quella completa yyyy-MM-gg ‘T’HH: mm: ss’Z’. Giusto?
Se desideri inviare solo la stringa della data come yyyy-MM-dd, dovrai chiaramente rimuovere le informazioni relative a ora e fuso orario. Ti spiego subito come rimuovere queste informazioni!
> In questa guida ti spiegherò come rimuovere il TimeZone da XMLGregorianCalendar. Rimuovere il fuso orario e l’ora dall’oggetto java XMLGregorianCalendar.
Questo metodo serve a rimuovere il TimeZone da XMLGregorianCalendar (rimuove il fuso orario ad es. +1:00 oppure la “Z” dopo la data):
xmlDate.setTimezone(DatatypeConstants.FIELD_UNDEFINED);
Questo metodo serve a rimuovere il time da XMLGregorianCalendar (rimuove informazioni relative all’ora):
xmlDate.setTime(DatatypeConstants.FIELD_UNDEFINED, DatatypeConstants.FIELD_UNDEFINED, DatatypeConstants.FIELD_UNDEFINED, DatatypeConstants.FIELD_UNDEFINED);
Per meglio chiarirti le idee, ti mostro in basso un esempio di codice java in cui vengono mostrati in output i risultati dei 2 metodi visti in precedenza. Nel primo output viene rimosso solamente il TimeZone (cioè il fuso orario) nel secondo caso viene rimosso anche il Time (cioè l’ora).
import java.util.Date;
import java.util.GregorianCalendar;
import javax.xml.datatype.DatatypeConstants;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
public class Main {
public static void main(String[] args) {
XMLGregorianCalendar xmlDate = null;
GregorianCalendar gc = new GregorianCalendar();
gc.setTime(new Date());
try {
xmlDate = DatatypeFactory.newInstance().newXMLGregorianCalendar(gc);
System.out.println("Complete Date :- " + xmlDate.toString());
// To remove Timezone or "Z"
xmlDate.setTimezone(DatatypeConstants.FIELD_UNDEFINED);
System.out.println("Without Time Zone :- " + xmlDate.toString());
// To remove Time information
xmlDate.setTime(DatatypeConstants.FIELD_UNDEFINED,
DatatypeConstants.FIELD_UNDEFINED,
DatatypeConstants.FIELD_UNDEFINED,
DatatypeConstants.FIELD_UNDEFINED);
System.out.println("Without Time Zone & Time :- " + xmlDate.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
Effettuando il run del main da Eclipse, ecco l’output finale che si ottiene:
Come puoi notare nel primo System.out la xmlDate ha data e ora senza fuso orario, nel secondo System.out la xmlDate presenta solo la data senza ora e fuso orario.








