tl; dr
Instant.parse("2014-10-23T00:35:14.800Z")
.toEpochMilli()
One-Liner In java.time
Il quadro java.time è integrato in Java 8 e versioni successive. Queste nuove classi sostituiscono le vecchie classi data-ora in bundle con le prime versioni di Java come java.util.Date/.Calendar. Vedi Tutorial. Le classi java.time sostituiscono anche la fortunata libreria Joda-Time, che è stata costruita da alcune delle stesse persone, inclusa la guida dello stesso Stephen Colbourne.
Un Instant
è un momento sulla sequenza temporale in UTC con una risoluzione di nanoseconds. È possibile ask it for a count of milliseconds dal suo epoch (primo momento del 1970 in UTC). Ma ricorda che uno Instant
potrebbe avere dati aggiuntivi, mentre i nanosecondi sono più sottili di millisecondi. Quindi il tuo potrebbe perdere i dati in quella piccola frazione di una frazione di secondo.
Le classi java.time utilizzano i formati ISO 8601 standard durante l'analisi/generazione di stringhe. Non è necessario specificare un modello di formattazione. La classe Instant
può directly parse una stringa.
Instant.parse("2014-10-23T00:35:14.800Z")
È possibile convertire che per un conteggio di millisecondi fin dall'epoca primo momento del 1970 in UTC chiamando toEpochMilli
essere a conoscenza di eventuali perdite di dati come la classe Instant
può contenere nanosecondi. Quindi l'estrazione di millisecondi troncerà ogni microsecondo o nanosecondo in qualsiasi secondo frazionario. La stringa di esempio ha solo tre cifre nel secondo frazionario, quindi solo millisecondi. Ma sei o nove cifre della frazione decimale verrebbero troncate a tre quando convertite in un conteggio di millisecondi.
long millisFromEpoch = Instant.parse("2014-10-23T00:35:14.800Z").toEpochMilli();
Per ottenere il tempo trascorso in termini di ore-minuti-secondi, utilizzare la classe Duration
. Alimenta il suo metodo between
un paio di momenti nel tempo.
Duration duration = Duration.between(Instant.parse("2014-10-23T00:35:14.800Z") , Instant.now());
One-Liner In Joda Time
UPDATE: Il progetto Joda-tempo è in modalità di manutenzione, con il team di consulenza di migrazione alle classi java.time.
Con la libreria Joda-Time 2.5:
long millisSinceEpoch = new DateTime("2014-10-23T00:35:14.800Z").getMillis();
Joda Time analizza e genera ISO 8601 stringhe per impostazione predefinita. Joda-Time funziona su Android. Le classi java.util.Date/.Calendar sono notoriamente fastidiose, confuse e imperfette. Evitalo.
Vedere [Tempo Joda] (http://joda-time.sourceforge.net/cal_iso.html). –
Se si utilizza Java 8, è possibile trovare [questa discussione] (http://programmers.stackexchange.com/questions/225343/why-are-the-java-8-java-time-classes-missing-a-getmillis -metodo) interessante. –
Per favore fatemi sapere perché avete downvoted questo. – David