Pregunta Obtener la fecha y hora actual en Android


¿Cómo puedo obtener la hora y fecha actual en una aplicación de Android?


890
2018-03-20 16:12


origen


Respuestas:


Podrías usar:

import java.util.Calendar

Date currentTime = Calendar.getInstance().getTime();

Hay muchas constantes en el Calendario para todo lo que necesita.

Editar:
  Comprobar Documentación de clase calendario


1067
2018-03-20 16:27



Usted puede (pero ya no debería - ver abajo!) uso android.text.format.Time:

Time now = new Time();
now.setToNow();

De la referencia vinculada anteriormente:

La clase Time es un reemplazo más rápido   para java.util.Calendar y   Clases java.util.GregorianCalendar.   Una instancia de la clase Time   representa un momento en el tiempo, especificado   con segunda precisión.


NOTA 1: Han pasado varios años desde que escribí esta respuesta, y se trata de una clase antigua, específica de Android y ahora obsoleta. Google ahora dice ese "[t] su clase tiene una serie de problemas y se recomienda que Calendario Gregoriano se usa en su lugar ".


NOTA 2: A pesar de Time clase tiene un toMillis(ignoreDaylightSavings) método, esto es simplemente una conveniencia para pasar a métodos que esperan tiempo en milisegundos. El valor de tiempo es solo preciso a un segundo; la porción de milisegundos es siempre 000. Si en un bucle lo haces

Time time = new Time();   time.setToNow();
Log.d("TIME TEST", Long.toString(time.toMillis(false)));
... do something that takes more than one millisecond, but less than one second ...

La secuencia resultante repetirá el mismo valor, como 1410543204000, hasta que haya comenzado el siguiente segundo, en ese momento 1410543205000 comenzará a repetirse.


474
2018-03-20 16:17



Si desea obtener la fecha y la hora en un patrón específico, puede usar lo siguiente:

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss");
String currentDateandTime = sdf.format(new Date());

288
2018-01-18 17:44



Para aquellos que prefieren un formato personalizado, puede usar:

DateFormat df = new SimpleDateFormat("EEE, d MMM yyyy, HH:mm");
String date = df.format(Calendar.getInstance().getTime());

Mientras que puede tener patrones de DateFormat tales como:

"yyyy.MM.dd G 'at' HH:mm:ss z" ---- 2001.07.04 AD at 12:08:56 PDT
"hh 'o''clock' a, zzzz" ----------- 12 o'clock PM, Pacific Daylight Time
"EEE, d MMM yyyy HH:mm:ss Z"------- Wed, 4 Jul 2001 12:08:56 -0700
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"------- 2001-07-04T12:08:56.235-0700
"yyMMddHHmmssZ"-------------------- 010704120856-0700
"K:mm a, z" ----------------------- 0:08 PM, PDT
"h:mm a" -------------------------- 12:08 PM
"EEE, MMM d, ''yy" ---------------- Wed, Jul 4, '01

188
2017-12-18 02:42



En realidad, es más seguro configurar la zona horaria actual configurada en el dispositivo con Time.getCurrentTimezone(), de lo contrario obtendrá la hora actual en UTC.

Time today = new Time(Time.getCurrentTimezone());
today.setToNow();

Luego, puede obtener todos los campos de fecha que desee, como, por ejemplo:

textViewDay.setText(today.monthDay + "");             // Day of the month (1-31)
textViewMonth.setText(today.month + "");              // Month (0-11)
textViewYear.setText(today.year + "");                // Year 
textViewTime.setText(today.format("%k:%M:%S"));  // Current time

Ver android.text.format.Time clase para todos los detalles.

ACTUALIZAR

Como muchas personas señalan, Google dice que esta clase tiene varios problemas y que ya no se debe usar:

Esta clase tiene varios problemas y se recomienda que   GregorianCalendar se usa en su lugar.

Problemas conocidos:

Por razones históricas cuando se realizan cálculos de tiempo todo   la aritmética actualmente tiene lugar usando enteros de 32 bits. Esto limita   el rango de tiempo confiable representable desde 1902 hasta 2037. Ver el   Artículo de wikipedia sobre el problema del año 2038 para más detalles. No confíes en   este comportamiento; puede cambiar en el futuro Vocación   switchTimezone (String) en una fecha que no puede existir, como un muro   el tiempo que se saltó debido a una transición de DST, dará como resultado una fecha   en 1969 (es decir, -1, o 1 segundo antes del 1 de enero de 1970 UTC). Mucho de   el formateo / análisis asume el texto ASCII y, por lo tanto, no es adecuado   para usar con scripts que no sean ASCII.


119
2018-02-11 14:02



Para la fecha y hora actual, use:

String mydate = java.text.DateFormat.getDateTimeInstance().format(Calendar.getInstance().getTime());

Qué salidas:

Feb 27, 2012 5:41:23 PM

73
2018-02-27 12:16



Para calcular la hora actual, puede usar System.currentTimeMillis() que es estándar en Java. Entonces puedes usarlo para crear una fecha

Date currentDate = new Date(System.currentTimeMillis());

Y como lo mencionaron otros para crear un tiempo

Time currentTime = new Time();
currentTime.setToNow();

46
2017-10-25 23:07



Pruebe de esta manera Todos los formatos se dan a continuación para obtener el formato de fecha y hora.

    Calendar c = Calendar.getInstance();
    SimpleDateFormat dateformat = new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss aa");
    String datetime = dateformat.format(c.getTime());
    System.out.println(datetime);

first

second third


46
2017-12-17 06:58