Cómo obtener la hora y fecha actuales en Android

Resuelto M7M asked hace 54 años • 43 respuestas

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

M7M avatar Jan 01 '70 08:01 M7M
Aceptado

Podrías usar:

import java.util.Calendar;
import java.util.Date;

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

Hay muchas constantes en Calendar para todo lo que necesitas.

Consulte la documentación de la clase Calendario .

 avatar Mar 20 '2011 16:03

Puedes ( pero ya no deberías , ¡ver más abajo!) usar android.text.format.Time :

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

De la referencia vinculada arriba:

La clase Time es un reemplazo más rápido para las clases java.util.Calendar y java.util.GregorianCalendar. Una instancia de la clase Time representa un momento en el tiempo, especificado con una 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 que "[e]sta clase tiene varios problemas y se recomienda utilizar GregorianCalendar en su lugar".


NOTA 2: Aunque la Timeclase tiene un toMillis(ignoreDaylightSavings)método, esto es simplemente una conveniencia para pasar a métodos que esperan tiempo en milisegundos. El valor del tiempo sólo tiene una precisión de 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, momento en el que 1410543205000comenzará a repetirse.

Thomas Padron-McCarthy avatar Mar 20 '2011 16:03 Thomas Padron-McCarthy

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

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

O,

Fecha :

String currentDate = new SimpleDateFormat("dd-MM-yyyy", Locale.getDefault()).format(new Date());

Tiempo:

String currentTime = new SimpleDateFormat("HH:mm:ss", Locale.getDefault()).format(new Date());
Miciurash avatar Jan 18 '2012 17:01 Miciurash

Para aquellos que prefieran un formato personalizado, pueden utilizar:

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

Mientras que puedes tener patrones DateFormat 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
ANemati avatar Dec 18 '2013 02:12 ANemati