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" , " " )
2016-05-06 19: 24: 25.694
java.time
No Java 8 e posterior, temos a estrutura java.time incorporada no Java 8 e posterior. Essas novas classes substituem as antigas classes problemáticas java.util.Date/.Calendar. As novas classes são inspiradas no altamente bem - sucedido framework Joda-Time , pretendido como seu sucessor, similar em conceito, mas re-arquitetado. Definido pelo JSR 310 . Prorrogado pelo projeto ThreeTen-Extra . Veja o tutorial .
Esteja ciente de que java.time é capaz de resolução em nanossegundos (9 casas decimais em fração de segundo) versus milissegundos resolução em (3 casas decimais) de java.util.Date e Joda-Time. Portanto, ao formatar para exibir apenas três casas decimais, você pode ocultar dados.
Se você deseja eliminar microssegundos ou nanossegundos de seus dados, trunque.
Instant instant2 = instant.truncatedTo( ChronoUnit.MILLIS ) ;
As classes java.time usam o formato ISO 8601 por padrão ao analisar / gerar cadeias. A Z
no final é abreviação deZulu
, e significa UTC .
An Instant
representa um momento na linha do tempo no UTC com resolução de até nanossegundos . A captura do momento atual no Java 8 é limitada a milissegundos , com uma nova implementação no Java 9 capturando até nanossegundos, dependendo das habilidades do relógio de hardware do computador.
Instant instant = Instant.now (); // Current date-time in UTC.
String output = instant.toString ();
2016-05-06T23: 24: 25.694Z
Substitua o T
meio por um espaço e o Z
por nada, para obter a saída desejada.
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.
2016-05-06 23: 24: 25.694
Como você não se importa em incluir o deslocamento ou o fuso horário, torne uma data "local" não relacionada a qualquer localidade específica.
String output = LocalDateTime.now ( ).toString ().replace ( "T", " " );
Joda-Time
A bem-sucedida biblioteca Joda-Time foi a inspiração para o framework java.time. É aconselhável migrar para java.time quando conveniente.
O formato ISO 8601 inclui milissegundos e é o padrão para a biblioteca Joda-Time 2.4.
System.out.println( "Now: " + new DateTime ( DateTimeZone.UTC ) );
Quando correr ...
Now: 2013-11-26T20:25:12.014Z
Além disso, você pode solicitar os milissegundos de fração de segundo como um número, se necessário:
int millisOfSecond = myDateTime.getMillisOfSecond ();