Sconti e offerte Amazon
Prima di leggere aiutaci ad offrirti contenuti sempre di qualità
Seguici sui Social Network!

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.

Lascia una risposta

Please enter your comment!
Please enter your name here