¿Cómo formatear correctamente según la fecha y hora de configuración del dispositivo cuando se tiene un año, mes, día, hora y minuto?
321
Utilice la clase estándar Java DateFormat.
Por ejemplo, para mostrar la fecha y hora actuales, haga lo siguiente:
Date date = new Date(location.getTime());
DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext());
mTimeText.setText("Time: " + dateFormat.format(date));
Puede inicializar un objeto Date con sus propios valores, sin embargo, debe tener en cuenta que los constructores han quedado en desuso y realmente debería estar usando un objeto Java Calendar.
DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext());
el formato de fecha devuelto es de tipojava.text.DateFormat
(y NOandroid.text.format.DateFormat
)En mi opinión,
android.text.format.DateFormat.getDateFormat(context)
me confunde porque este método devuelve enjava.text.DateFormat
lugar deandroid.text.format.DateFormat
- - ".Entonces, utilizo el código de fragmento como se muestra a continuación para obtener la fecha / hora actual en mi formato.
Además, puede usar otros formatos. Sigue a DateFormat .
fuente
hh:mm:ss
le dará01:00:00
para la 1 PM, tendrá que usarkk:mm:ss
para obtener13:00:00
k
es la hora del día (1-24), no quiere decirH
, que es la hora del día (0-23), por ejemplo. HH: mm: ss? Ver: developer.android.com/reference/java/text/SimpleDateFormat.htmljava.text.SimpleDateFormat
(lo que vinculó y usaH
durante horas en el rango de 0-23) yandroid.text.format.DateFormat
(de qué trata la respuesta y lo que usak
durante horas en el rango dek
, sin embargo, la documentación de losDateFormat
estados claros. Para la documentación canónica de las cadenas de formato, vea SimpleDateFormat. Muy confuso. ¿O me estoy perdiendo algo?Puedes usar
DateFormat
. El resultado depende de la configuración regional predeterminada del teléfono, pero también puede especificar la configuración regional:https://developer.android.com/reference/java/text/DateFormat.html
Esto es resultados en un
FR Locale: 3 nov. 2017
US / En Locale: 12 de enero de 1952
FR Local: 03/11/2017
US / En Locale: 12.13.52
FR Locale: 3 nov. 2017
US / En Locale: 12 de enero de 1952
FR Local: 3 de noviembre de 2017
US / En Locale: 12 de enero de 1952
FR Locale: vendredi 3 de noviembre de 2017
US / En Locale: martes 12 de abril de 1952
FR Locale: 3 nov. 2017 16:04:58
FR Local: 03/11/2017 16:04
FR Local: 03/11/2017 16:04:58
FR Local: 03/11/2017 16:04:58 GMT + 01: 00
FR Local: 03/11/2017 16:04:58 heure normale d'Europe centrale
FR Locale: 16:04:58
FR Locale: 16:04
FR Locale: 16:04:58
FR Local: 16:04:58 GMT + 01: 00
FR Local: 16:04:58 heure normale d'Europe centrale
fuente
Fecha para localizar la cadena de fecha:
Opciones:
-> 31 de diciembre de 1969
-> 31 de diciembre de 1969 4:00:00 p.m.
-> 4:00:00 PM
fuente
Esto lo hará:
fuente
Utilice SimpleDateFormat
Me gusta esto:
fuente
new SimpleDateFormat("my-format", Locale.getDefault());
Después de esto: http://developer.android.com/reference/android/text/format/Time.html
Es mejor usar la clase Time nativa de Android:
Luego formatee:
fuente
Use estos dos como variables de clase:
Y úsalo así:
fuente
Este es mi método, puedes definir un formato de entrada y salida.
fuente
SimpleDateFormat
Utilizo SimpleDateFormat sin un patrón personalizado para obtener la fecha y hora reales del sistema en el formato preseleccionado del dispositivo :
devuelve :
fuente
Utilice construir en clase de tiempo!
fuente
Las otras respuestas son generalmente correctas. Me gustaría contribuir con la respuesta moderna. Las clases
Date
,DateFormat
y seSimpleDateFormat
utilizan en la mayoría de las otras respuestas, están desactualizadas y han causado problemas a muchos programadores durante muchos años. Hoy tenemos mucho mejor enjava.time
AKA JSR-310, la moderna API de fecha y hora de Java. ¿Puedes usar esto en Android todavía? ¡Seguramente! Las clases modernas se han trasportado a Android en el proyecto ThreeTenABP. Vea esta pregunta: Cómo usar ThreeTenABP en Android Project para todos los detalles.Este fragmento debe ayudarlo a comenzar:
Cuando configuro el idioma preferido de mi computadora en inglés de EE. UU. O inglés de Reino Unido, esto imprime:
Cuando, en cambio, lo configuro en danés, obtengo:
Entonces sigue la configuración. Sin embargo, no estoy seguro de qué detalle sigue la configuración de fecha y hora de su dispositivo, y esto puede variar de un teléfono a otro.
fuente
¡Este código funciona para mí!
fuente
La clase de formato de fecha funciona con código de trucos para hacer la fecha Me gusta
Puedes consultar más trucos aquí .
fuente
Este código devolvería la fecha y hora actuales:
fuente
Lugar
Para obtener la fecha o la hora en formato local de milisegundos, utilicé esto:
Fecha y hora
Fecha
Hora
Puede usar otro estilo de fecha y estilo de hora. Más información sobre estilos aquí .
fuente
Camino más corto:
%tR
es la abreviatura de%tH:%tM
,<
significa reutilizar el último parámetro (1$
).Es equivalente a
String.format("%1$tY-%1$tm-%1$td %1$tH:%1$tM", Calendar.getInstance())
https://developer.android.com/reference/java/util/Formatter.html
fuente
Tratar:
Y cuando accede a variables pasadas:
fuente
Lo uso así:
fuente
Evite el juDate
Java.util.Date y .Calendar y SimpleDateFormat en Java (y Android) son notoriamente problemáticos. Evítales. Son tan malos que Sun / Oracle los abandonó, reemplazándolos con el nuevo paquete java.time en Java 8 (no en Android a partir de 2014). El nuevo
java.time
fue inspirado por el Joda-Time biblioteca .Joda-Time
Joda-Time funciona en Android.
Busque StackOverflow para "Joda" para encontrar muchos ejemplos y mucha discusión.
Un tidbit de código fuente usando Joda-Time 2.4.
Formato estandar.
Formato localizado
fuente
En 2016, cuando quiero personalizar el formato (no de acuerdo con la configuración del dispositivo, como usted pregunta ...), generalmente uso el archivo de recursos de cadena:
en strings.xml:
En actividad:
Esto también es útil con el lanzamiento de la nueva Biblioteca de enlace de fechas .
Entonces puedo tener algo como esto en el archivo de diseño:
Y en clase java:
fuente
La clase Time de Android proporciona 3 métodos de formato http://developer.android.com/reference/android/text/format/Time.html
Así es como lo hice:
Espero que sea útil :-)
fuente
Es muy tarde pero puede ayudar a alguien
aquí
format
está el formato que necesitasEj: "HH: mm" devuelve 15:30
fuente