Je suppose sur la base des noms de champ ce que vous vraiment dire est que vous devez le champ dateTimeLocal
pour retourner le xs:dateTime
représentant heure locale du fournisseur de services, mais vous voulez dateTimeUTC
pour représenter le xs:dateTime
de GMT ou UTC. Ce ne sont pas vraiment des formats (comme Java DateFormat
) mais plutôt des représentations de fuseaux horaires.
Cela dit, voici au moins une façon de le faire: en utilisant java.util.Calendar
et sa capacité à refléter le temps par rapport à une donnée java.util.TimeZone
:
package org.example.sampleservice;
import java.io.Serializable;
import java.util.Calendar;
import java.util.Date;
import javax.xml.bind.annotation.XmlElement;
public class Test implements Serializable {
private Date dateTimeLocal;
private Calendar dateTimeUTC;
@XmlElement(name="DateTimeLocal")
public Date getDateTimeLocal() {
return dateTimeLocal;
}
public void setDateTimeLocal(Date dateTimeLocal) {
this.dateTimeLocal = dateTimeLocal;
}
@XmlElement(name="DateTimeUTC")
public Calendar getDateTimeUTC() {
return dateTimeUTC;
}
public void setDateTimeUTC(Calendar dateTimeUTC) {
this.dateTimeUTC = dateTimeUTC;
}
}
Ensuite, dans votre mise en œuvre de services (où Test
est peuplée):
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
...
Test result = new Test();
result.setDateTimeLocal(new Date());
Calendar zuluTime = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
result.setDateTimeUTC(zuluTime);
L'exécution de ce vers 21h47 heure de l'Est des États-Unis, je reçois:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:getTestResponse xmlns:ns2="http://sampleservice.example.org/">
<return>
<DateTimeLocal>2016-12-07T21:47:04.988-05:00</DateTimeLocal>
<DateTimeUTC>2016-12-08T02:47:04.988Z</DateTimeUTC>
</return>
</ns2:getTestResponse>
</S:Body>
</S:Envelope>
Depuis America/New_York
heure GMT moins 5 heures,
<DateTimeLocal>2016-12-07T21:47:04.988-05:00</DateTimeLocal>
représente 7 Décembre 21:47 alors
<DateTimeUTC>2016-12-08T02:47:04.988Z</DateTimeUTC>
représente il est en fait 8 Décembre 02:47 dans Temps moyen de Greenwich (temps UTC ou Zulu).