2015-08-26 9 views
6

Esiste un modo per rappresentare una data (senza un orario) associata a un fuso orario? L'unica rappresentazione della data senza orario che sono riuscito a trovare è LocalDate che, immagino, non ti consente di specificare una zona.Java8 data di zonatura senza orario

risposta

7

Risposta breve, non esiste questo tipo in Java-8.

La combinazione di una data di calendario e un fuso orario è discutibile, per lo meno per dire. Il motivo è che i fusi orari sono destinati a funzionare in data e ora. Poiché i fusi orari sono responsabili della traduzione tra istanti/istanti globali e timestamp locali (compresa la data e l'ora), una combinazione di solo una data e una zona non è semplicemente completa per consentire tali trasformazioni.

L'unico tipo simile sono consapevole è il tipo

xs: date

in XML-Schema che consente in modo esplicito un offset supplementare (che è meno di un fuso orario, perché non memorizza le regole dell'ora legale o le correzioni storiche). A mio parere, il consorzio W3C ha piuttosto introdotto questo tipo per ragioni di simmetria e non per compiti in tempo reale. JSR-310 (che ha introdotto java.time-package in Java-8) originariamente inteso per offrire un tipo simile chiamato OffsetDate, vedere anche this page. Era removed tuttavia quando Java-8 era finito per il rilascio.

Naturalmente, puoi scrivere tu stesso una classe semplice che contiene due membri dello stato dei tipi LocalDate e ZoneId (ma qual è il tuo caso d'uso ???). Per XML, preferirei scegliere LocalDate e ZonalOffset.

5

forse è possibile utilizzare lo ZonedDateTime classe:

ZonedDateTime zonedDateTime = ZonedDateTime.now(ZoneId.of("Europe/Paris")); 
LocalDate localDate = zonedDateTime.toLocalDate(); // gets you the date without time 
ZoneId zoneId = zonedDateTime.getZone(); // gets you the timezone 
Problemi correlati