tl; dr
Instant.now()
.toString()
2016-05-06T23: 24: 25.694Z
ZonedDateTime
.now
(
ZoneId.of( "America/Montreal" )
)
.format( DateTimeFormatter.ISO_LOCAL_DATE_TIME )
.replace( "T" , " " )
06/05/2016 19: 24: 25.694
java.time
In Java 8 e versioni successive, abbiamo il framework java.time integrato in Java 8 e versioni successive. Queste nuove classi soppiantano le fastidiose classi java.util.Date/.Calendar. Le nuove classi sono ispirate al framework Joda-Time di grande successo , inteso come suo successore, simile nel concetto ma riprogettato. Definito da JSR 310 . Esteso dal progetto ThreeTen-Extra . Vedi il tutorial .
Tieni presente che java.time è in grado di risolvere i nanosecondi (9 decimali in frazione di secondo), rispetto al millisecondo risoluzione di (3 decimali) di java.util.Date e Joda-Time. Pertanto, durante la formattazione per visualizzare solo 3 cifre decimali, è possibile nascondere i dati.
Se si desidera eliminare microsecondi o nanosecondi dai dati, troncare.
Instant instant2 = instant.truncatedTo( ChronoUnit.MILLIS ) ;
Le classi java.time utilizzano il formato ISO 8601 per impostazione predefinita quando analizzano / generano stringhe. A Z
alla fine è l'abbreviazione di Zulu
, e significa UTC .
An Instant
rappresenta un momento sulla linea temporale in UTC con risoluzione fino a nanosecondi . Catturare il momento attuale in Java 8 è limitato a millisecondi , con una nuova implementazione in Java 9 che cattura fino a nanosecondi a seconda delle capacità dell'orologio hardware del tuo computer.
Instant instant = Instant.now (); // Current date-time in UTC.
String output = instant.toString ();
2016-05-06T23: 24: 25.694Z
Sostituisci al T
centro uno spazio e il Z
nulla per ottenere l'output desiderato.
String output = instant.toString ().replace ( "T" , " " ).replace( "Z" , "" ; // Replace 'T', delete 'Z'. I recommend leaving the `Z` or any other such [offset-from-UTC][7] or [time zone][7] indicator to make the meaning clear, but your choice of course.
06/05/2016 23: 24: 25.694
Poiché non ti interessa includere l'offset o il fuso orario, imposta una data "locale" non correlata a una particolare località.
String output = LocalDateTime.now ( ).toString ().replace ( "T", " " );
Joda-Time
La libreria Joda-Time di grande successo è stata l'ispirazione per il framework java.time. Consigliabile migrare su java.time quando è conveniente.
Il formato ISO 8601 include millisecondi ed è il valore predefinito per la libreria Joda-Time 2.4.
System.out.println( "Now: " + new DateTime ( DateTimeZone.UTC ) );
Quando eseguito ...
Now: 2013-11-26T20:25:12.014Z
Inoltre, puoi richiedere la frazione di millisecondi di secondo come numero, se necessario:
int millisOfSecond = myDateTime.getMillisOfSecond ();