El siguiente código me da la hora actual. Pero no dice nada sobre milisegundos.
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;
}
Obtengo la fecha en el formato 2009-09-22 16:47:08
(AAAA-MM-DD HH: MI: Sec) .
Pero quiero recuperar la hora actual en el formato 2009-09-22 16:47:08.128
((AAAA-MM-DD HH: MI: Sec.Ms), donde 128 indica el milisegundo.
SimpleTextFormat
Funcionará bien. Aquí la unidad de tiempo más baja es la segunda, pero ¿cómo obtengo milisegundos también?
java.util.Date
,java.util.Calendar
yjava.text.SimpleTextFormat
ahora están legado , suplantados por los java.time clases. Ver Tutorial de Oracle .Respuestas:
fuente
toString(String format)
método? Eljava.util.Date
no parece tenerlo. ¿Te refieres a la API de Joda Time? Pero un posible beneficio es la reutilización del mismo objeto formateador. Otra es que no tiene que agregar una API: la clase Date es una clase de biblioteca Java estándar.LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"))
Un Java One Liner
en estilo JDK8
fuente
Solo tiene que agregar el campo de milisegundos en su cadena de formato de fecha:
El documento API de SimpleDateFormat describe la cadena de formato en detalle.
fuente
prueba esto:-
http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html
o
fuente
tl; dr
java.time
En Java 8 y versiones posteriores, tenemos el marco java.time integrado en Java 8 y versiones posteriores. Estas nuevas clases suplantan a las viejas y problemáticas clases java.util.Date/.Calendar. Las nuevas clases están inspiradas en el exitoso marco Joda-Time , pensado como su sucesor, similar en concepto pero rediseñado. Definido por JSR 310 . Ampliado por el proyecto ThreeTen-Extra . Ver el tutorial .
Tenga en cuenta que java.time es capaz de resolución en nanosegundos (9 decimales en fracción de segundo), en comparación con la resolución en milisegundos (3 decimales) de java.util.Date y Joda-Time. Entonces, al formatear para mostrar solo 3 decimales, podría estar ocultando datos.
Si desea eliminar cualquier microsegundos o nanosegundos de sus datos, truncar.
Las clases java.time usan el formato ISO 8601 de manera predeterminada al analizar / generar cadenas. Una
Z
al final es la abreviatura deZulu
, y significa UTC .Un
Instant
representa un momento en la línea de tiempo en UTC con una resolución de hasta nanosegundos . Capturar el momento actual en Java 8 se limita a milisegundos , con una nueva implementación en Java 9 que captura hasta nanosegundos dependiendo de las capacidades del reloj de hardware de su computadora.Reemplace el
T
en el medio con un espacio y elZ
sin nada, para obtener la salida deseada.Como no le importa incluir el desplazamiento o la zona horaria, haga una fecha-hora "local" no relacionada con ninguna localidad en particular.
Joda-Time
La exitosa biblioteca Joda-Time fue la inspiración para el marco java.time. Se recomienda migrar a java.time cuando sea conveniente.
El formato ISO 8601 incluye milisegundos, y es el predeterminado para la biblioteca Joda-Time 2.4.
Cuando corres ...
Además, puede solicitar la fracción de milisegundos de segundo como número, si es necesario:
fuente
Yo usaría algo como esto:
La variable
dateTime
puede ser cualquier valor de fecha y / o hora, consulte JavaDoc paraFormatter
.fuente
La forma más fácil era usar (antes de Java 8),
Pero SimpleDateFormat no es seguro para subprocesos. Ni java.util.Date . Esto dará lugar a posibles problemas de concurrencia para los usuarios. Y hay muchos problemas en esos diseños existentes. Para superar esto ahora en Java 8, tenemos un paquete separado llamado java.time . Este documento de fecha y hora de Java SE 8 tiene una buena visión general al respecto.
Entonces, en Java 8, algo como a continuación hará el truco (para formatear la fecha / hora actual),
Y una cosa a tener en cuenta es que fue desarrollado con la ayuda de la popular biblioteca de terceros joda-time ,
Pero ahora se
joda-time
está convirtiendo en obsoleto y pidió a los usuarios que migren a nuevosjava.time
.De todos modos habiendo dicho eso,
Si tiene una instancia de Calendar , puede usarla a continuación para convertirla a la nueva
java.time
,Si tenías un objeto Date,
Si acaba de tener la época milisegundos,
fuente
Para complementar las respuestas anteriores, aquí hay un pequeño ejemplo de trabajo de un programa que imprime la hora y fecha actuales, incluidos los milisegundos.
fuente
Use esto para obtener su hora actual en el formato especificado:
fuente
java.util.Date
,java.util.Calendar
yjava.text.SimpleDateFormat
ahora son heredadas , suplantadas por las clases java.time integradas en Java 8 y posteriores. Ver Tutorial de Oracle .Tengo un ejemplo simple aquí para mostrar la fecha y la hora con Millisecond ......
fuente
No veo una referencia a esto:
El formato anterior también es útil.
http://www.java2s.com/Tutorials/Java/Date/Date_Format/Format_date_in_yyyyMMddHHmmssSSS_format_in_Java.htm
fuente
Respuesta:
fuente
El documento en Java 8 lo nombra fracción de segundo , mientras que en Java 6 se denomina milisegundo . Esto me llevó a la confusión.
fuente
java.text (anterior a java 8)
java.time
fuente
Simplemente puede obtenerlo en el formato que desee.
fuente