Cómo obtener la hora y fecha actuales en Android
¿Cómo puedo obtener la hora y fecha actuales en una aplicación de Android?
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 .
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 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 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 1410543205000
comenzará a repetirse.
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());
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