tl; dr
Instant.now()
.toString()
2017-01-23T12: 34: 56.123456789Z
UTC
Gene rally migliore per scambiare dati per i valori di data-ora in UTC (GMT). Lascia che il ricevitore si adatti al fuso orario desiderato.
Instant
La classe Instant
rappresenta un momento sulla timeline in UTC, con una risoluzione di nanosecondi.
Instant instant = Instant.now() ;
String output = instant.toString() ; // Generate a String in standard ISO 8601 format.
2017-01-23T12: 34: 56.123456789Z
Si può facilmente analizzare quella stringa.
Instant instant = Instant.parse("2017-01-23T12:34:56.123456789Z") ;
ISO 8601
Lo standard definisce ISO 8601 chiare formati di facile lettura facili da analizzare per rappresentazioni testuali di valori di data e ora. Questi formati sono ideali per lo scambio di dati.
Per un momento in UTC, si intende il formato visto nell'esempio sopra. Lo T
separa la parte della data dalla porzione dell'ora del giorno. Il Z
alla fine è l'abbreviazione di Zulu
e significa UTC.
Locale
La questione menziona locale come se relative al fuso orario. A Locale
ha niente da fare con il fuso orario. A Locale
specifica (a) la lingua umana per la traduzione di nome del giorno, nome del mese e simili, e (b) le norme culturali che decidono questioni di abbreviazione, lettere maiuscole, punteggiatura e così via.
Un fuso orario è una cronologia delle modifiche apportate a offset-from-UTC di una regione, con rilevamento di anomalie che hanno provocato tali modifiche, ad esempio Daylight Saving Time (DST).
Ricerca overflow per ulteriori informazioni. Questo è già stato coperto molte centinaia di volte. Cerca classi come ZoneId
, ZoneOffset
, ZonedDateTime
, Instant
, OffsetDateTime
e DateTimeFormatter
. Leggi lo Oracle Tutorial sulle classi java.time.
ZonedDateTime zdt = instant.atZone(ZoneId.of("Pacific/Auckland")) ;
cosa succede quando la data viene creata in un fuso orario e passata e consumata in un altro fuso orario? – aviad
La data creata in un fuso orario viene convertita nel numero di millisecondi dal 1 gennaio 1970, 00:00:00 GMT (via getTime) e quindi questo numero viene convertito in una data qualsiasi fuso orario. –
Probabilmente è quello che sto cercando. Quanto è lungo il numero di millisecondi? – Greyshack