zona studio obtener ingresar horaria hora formato actual java date

studio - obtener zona horaria java



¿Cómo obtener la hora actual en el formato AAAA-MM-DD HH: MI: Sec.Millisecond en Java? (10)

El código de abajo me da la hora actual. Pero no dice nada de 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; }

Recibo la fecha en el formato 2009-09-22 16:47:08 (YYYY-MM-DD HH: MI: Sec) .

Pero quiero recuperar la hora actual en el formato 2009-09-22 16:47:08.128 ((YYYY-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?


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

En Java 8 y java.time posteriores, tenemos el marco java.time integrado en Java 8 y java.time posteriores. Estas nuevas clases reemplazan las problemáticas viejas 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 . Extendido por el proyecto ThreeTen-Extra . Ver el Tutorial .

Tenga en cuenta que java.time es capaz de una resolución de nanosecond (9 decimales en una fracción de segundo), en comparación con la resolución de millisecond (3 decimales) de java.util.Date y Joda-Time. Entonces, al formatear para mostrar solo 3 lugares decimales, podría estar ocultando datos.

Si desea eliminar los microsegundos o nanosegundos de sus datos, trunque.

Instant instant2 = instant.truncatedTo( ChronoUnit.MILLIS ) ;

Las clases java.time utilizan el formato ISO 8601 de manera predeterminada al analizar / generar cadenas. Una Z al final es la abreviatura de Zulu y significa UTC .

Un Instant representa un momento en la línea de tiempo en UTC con resolución de hasta nanosecond . La captura del momento actual en Java 8 se limita a millisecond , con una nueva implementación en Java 9 que captura hasta nanosegundos, según las capacidades del reloj del hardware de su computadora.

Instant instant = Instant.now (); // Current date-time in UTC. String output = instant.toString ();

2016-05-06T23: 24: 25.694Z

Reemplace la T en el medio con un espacio y la Z con nada para obtener el resultado deseado.

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 no le importa incluir el desplazamiento o la zona horaria, establezca una fecha y hora "local" no relacionada con ninguna localidad en particular.

String output = LocalDateTime.now ( ).toString ().replace ( "T", " " );

Tiempo de joda

La exitosa biblioteca Joda-Time fue la inspiración para el marco java.time. Aconsejable migrar a java.time cuando sea conveniente.

El formato ISO 8601 incluye milisegundos, y es el predeterminado para la biblioteca Joda-Time 2.4.

System.out.println( "Now: " + new DateTime ( DateTimeZone.UTC ) );

Cuando se ejecuta ...

Now: 2013-11-26T20:25:12.014Z

Además, puede solicitar la fracción de segundo en milisegundos como un número, si es necesario:

int millisOfSecond = myDateTime.getMillisOfSecond ();



La forma más fácil era (antes de Java 8) usar,

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");

Pero SimpleDateFormat no es seguro para subprocesos. Ni java.util.Date . Esto conducirá a problemas potenciales 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 lo siguiente hará el truco (para formatear la fecha / hora actual),

LocalDateTime.now() .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"));

Y una cosa a destacar es que fue desarrollado con la ayuda de la popular biblioteca de terceros Joda-Time ,

El proyecto ha sido dirigido conjuntamente por el autor de Joda-Time (Stephen Colebourne) y Oracle, bajo JSR 310, y aparecerá en el nuevo paquete Java SE 8 java.time.

Pero ahora el joda-time está desaprobando y pidió a los usuarios que migren al nuevo java.time .

Tenga en cuenta que a partir de Java SE 8, se solicita a los usuarios que migren a java.time (JSR-310), una parte central del JDK que reemplaza este proyecto.

De todos modos habiendo dicho eso,

Si tiene una instancia de Calendar , puede usarla a continuación para convertirla al nuevo java.time ,

Calendar calendar = Calendar.getInstance(); long longValue = calendar.getTimeInMillis(); LocalDateTime date = LocalDateTime.ofInstant(Instant.ofEpochMilli(longValue), ZoneId.systemDefault()); String formattedString = date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS")); System.out.println(date.toString()); // 2018-03-06T15:56:53.634 System.out.println(formattedString); // 2018-03-06 15:56:53.634

Si tuvieras un objeto Date,

Date date = new Date(); long longValue2 = date.getTime(); LocalDateTime dateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(longValue2), ZoneId.systemDefault()); String formattedString = dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS")); System.out.println(dateTime.toString()); // 2018-03-06T15:59:30.278 System.out.println(formattedString); // 2018-03-06 15:59:30.278

Si acabas de tener la época de milisegundos,

LocalDateTime date = LocalDateTime.ofInstant(Instant.ofEpochMilli(epochLongValue), ZoneId.systemDefault());


Para complementar las respuestas anteriores, aquí hay un pequeño ejemplo funcional de un programa que imprime la fecha y la hora actuales, incluidos los milisegundos.

import java.text.SimpleDateFormat; import java.util.Date; public class test { public static void main(String argv[]){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); Date now = new Date(); String strDate = sdf.format(now); System.out.println(strDate); } }


Simplemente puede obtenerlo en el formato que desee.

String date = String.valueOf(android.text.format.DateFormat.format("dd-MM-yyyy", new java.util.Date()));


Solo tiene que agregar el campo de milisegundos en su cadena de formato de fecha:

new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");

El documento API de SimpleDateFormat describe la cadena de formato en detalle.


Un Java un liner

public String getCurrentTimeStamp() { return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new Date()); }

en estilo JDK8

public String getCurrentLocalDateTimeStamp() { return LocalDateTime.now() .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS")); }


Yo usaría algo como esto:

String.format("%tF %<tT.%<tL", dateTime);

La fecha y hora variable puede ser cualquier valor de fecha y / o hora, consulte JavaDoc para Formatter .


prueba esto:-

http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS"); Date date = new Date(); System.out.println(dateFormat.format(date));

o

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); Calendar cal = Calendar.getInstance(); System.out.println(dateFormat.format(cal.getTime()));


SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");