tl; dr
Instant.ofEpochSecond( 1_280_512_800L )
2010-07-30T18: 00: 00Z
java.time
Il nuovo framework java.time integrato in Java 8 e versioni successive è il successore di Joda-Time.
Queste nuove classi includono un pratico metodo di fabbrica per convertire un conteggio di interi secondi dall'epoca. Ottieni un Instant
, un momento sulla linea temporale in UTC con una risoluzione fino a nanosecondi.
Instant instant = Instant.ofEpochSecond( 1_280_512_800L );
instant.toString (): 2010-07-30T18: 00: 00Z
Vedi quel codice eseguito dal vivo su IdeOne.com .
Asia/Kabul
o Asia/Tehran
fusi orari?
Hai riferito di ottenere un valore dell'ora del giorno di 22:30 invece delle 18:00 visto qui. Sospetto che la tua utility PHP stia applicando implicitamente un fuso orario predefinito per regolare da UTC. Il mio valore qui è UTC, indicato da Z
(abbreviazione di Zulu
, significa UTC). Qualche possibilità che il tuo sistema operativo o PHP per la tua macchina sia impostato Asia/Kabul
o sui Asia/Tehran
fusi orari? Suppongo che, come riporta IRST
nella tua uscita, ciò apparentemente significhi tempo dell'Iran. Attualmente nel 2017 quelle sono le uniche zone che operano con un periodo estivo che è quattro ore e mezza avanti rispetto a UTC.
Specificare un nome proprio fuso orario nel formato continent/region
, come ad esempio America/Montreal
, Africa/Casablanca
o Pacific/Auckland
. Non usare mai il 3-4 lettera sigla come EST
o IST
o IRST
come sono non fusi orari veri e propri, non standardizzati, e nemmeno unico (!).
Se vuoi vedere il tuo momento attraverso l'obiettivo del fuso orario di una particolare regione, applica a ZoneId
per ottenere a ZonedDateTime
. Sempre lo stesso momento simultaneo, ma visto come un diverso tempo dell'orologio da parete .
ZoneId z = ZoneId.of( "Asia/Tehran" ) ;
ZonedDateTime zdt = instant.atZone( z ); // Same moment, same point on timeline, but seen as different wall-clock time.
2010-07-30T22: 30 + 04: 30 [Asia / Teheran]
Conversione da java.time a classi legacy
È necessario attenersi alle nuove classi java.time. Ma puoi convertirlo in vecchio se necessario.
java.util.Date date = java.util.Date.from( instant );
Joda-Time
AGGIORNAMENTO: il progetto Joda-Time è ora in modalità manutenzione , con il team che consiglia la migrazione alle classi java.time .
Cordiali saluti, il costruttore per un DateTime Joda-Time è simile: moltiplicare per mille per produrre un (non un !).long
int
DateTime dateTime = new DateTime( ( 1_280_512_800L * 1000_L ), DateTimeZone.forID( "Europe/Paris" ) );
Meglio evitare le notoriamente fastidiose classi java.util.Date e .Calendar. Ma se è necessario utilizzare una data, è possibile convertire da Joda-Time.
java.util.Date date = dateTime.toDate();
Informazioni su java.time
Il framework java.time è integrato in Java 8 e versioni successive. Queste classi soppiantare la vecchia fastidiosi legacy classi data-time come java.util.Date
, Calendar
, e SimpleDateFormat
.
Il progetto Joda-Time , ora in modalità manutenzione , consiglia la migrazione alle classi java.time .
Per saperne di più, consulta il tutorial Oracle . E cerca Stack Overflow per molti esempi e spiegazioni. La specifica è JSR 310 .
Puoi scambiare oggetti java.time direttamente con il tuo database. Utilizzare un driver JDBC conforme a JDBC 4.2 o successivo. Nessuna necessità di stringhe, nessuna necessità di java.sql.*
classi.
Dove ottenere le classi java.time?
- Java SE 8 , Java SE 9 e versioni successive
- Built-in.
- Parte dell'API Java standard con un'implementazione in bundle.
- Java 9 aggiunge alcune funzionalità e correzioni minori.
- Java SE 6 e Java SE 7
- Gran parte della funzionalità java.time è trasferita su Java 6 e 7 in ThreeTen-Backport .
- androide
- Versioni successive di implementazioni di bundle Android delle classi java.time.
- Per precedenza Android (<26), il ThreeTenABP progetto si adatta ThreeTen-Backport (di cui sopra). Vedi Come usare ThreeTenABP… .
Il progetto ThreeTen-Extra estende java.time con classi aggiuntive. Questo progetto è un banco di prova per possibili aggiunte future a java.time. Si possono trovare alcune classi utili, come per esempio Interval
, YearWeek
, YearQuarter
e altro .