O código abaixo fornece a hora atual. Mas isso não diz nada sobre milissegundos.
public static String getCurrentTimeStamp() {
SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//dd/MM/yyyy
Date now = new Date();
String strDate = sdfDate.format(now);
return strDate;
}
Recebo a data no formato 2009-09-22 16:47:08
(AAAA-MM-DD HH: MI: Seg) .
Mas quero recuperar a hora atual no formato 2009-09-22 16:47:08.128
((AAAA-MM-DD HH: MI: Sec.Ms) - onde 128 indica o milissegundo.
SimpleTextFormat
vai funcionar bem. Aqui, a menor unidade de tempo é a segunda, mas como eu ganho milissegundos também?
java.util.Date
,java.util.Calendar
ejava.text.SimpleTextFormat
estão agora legado , suplantado pelos java.time classes. Consulte o Tutorial da Oracle .Respostas:
fonte
toString(String format)
método? Ojava.util.Date
parece não ter. Você está se referindo à API do Joda Time? Mas um benefício possível é a reutilização do mesmo objeto formatador. Outra é que você não precisa adicionar uma API - a classe Date é uma classe padrão da biblioteca Java.LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"))
Um liner Java único
no estilo JDK8
fonte
Você só precisa adicionar o campo de milissegundos na sua sequência de formato de data:
O documento da API de SimpleDateFormat descreve a cadeia de formato em detalhes.
fonte
tente o seguinte: -
http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html
ou
fonte
tl; dr
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.
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.Substitua o
T
meio por um espaço e oZ
por nada, para obter a saída desejada.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.
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.
Quando correr ...
Além disso, você pode solicitar os milissegundos de fração de segundo como um número, se necessário:
fonte
Eu usaria algo como isto:
Variável
dateTime
pode ser qualquer valor de data e / ou hora, consulte JavaDoc paraFormatter
.fonte
A maneira mais fácil era (antes do Java 8) usar,
Mas SimpleDateFormat não é seguro para threads. Nem java.util.Date . Isso levará a possíveis problemas de simultaneidade para os usuários. E há muitos problemas nesses projetos existentes. Para superá-los agora no Java 8, temos um pacote separado chamado java.time . Esta Java SE 8 Data e Hora documento de tem uma boa visão geral sobre ele.
Assim, no Java 8, algo como abaixo fará o truque (para formatar a data / hora atual),
E uma coisa a notar é que ele foi desenvolvido com a ajuda da popular biblioteca de terceiros joda-time ,
Mas agora o
joda-time
está ficando obsoleto e pediu aos usuários que migrassem para novosjava.time
.De qualquer forma, tendo dito isso,
Se você tiver uma instância do Google Agenda, use-a abaixo para convertê-la para a nova
java.time
,Se você tivesse um objeto Date,
Se você tivesse a época milissegundos,
fonte
Para complementar as respostas acima, aqui está um pequeno exemplo de trabalho de um programa que imprime a hora e a data atuais, incluindo milissegundos.
fonte
Use isso para obter seu horário atual no formato especificado:
fonte
java.util.Date
,java.util.Calendar
ejava.text.SimpleDateFormat
estão agora legado , suplantado pelos java.time classes internas em Java 8 e posterior. Consulte o Tutorial da Oracle .Eu tenho um exemplo simples aqui para exibir data e hora com milissegundos ......
fonte
Não vejo uma referência a isso:
O formato acima também é útil.
http://www.java2s.com/Tutorials/Java/Date/Date_Format/Format_date_in_yyyyMMddHHmmssSSS_format_in_Java.htm
fonte
Resp:
fonte
O documento no Java 8 o nomeia como fração de segundo , enquanto no Java 6 foi nomeado milissegundo . Isso me deixou confuso
fonte
java.text (anterior ao java 8)
java.time
fonte
Você pode simplesmente obtê-lo no formato desejado.
fonte