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.