Estoy proporcionando la respuesta moderna.
java.time y ThreeTenABP
Para obtener la fecha actual:
LocalDate today = LocalDate.now(ZoneId.of("America/Hermosillo"));
Esto le da un LocalDate
objeto, que es lo que debe usar para mantener una fecha en su programa. UNALocalDate
es una fecha sin hora del día.
Solo cuando necesite mostrar la fecha a un usuario, formatee en una cadena adecuada para la configuración regional del usuario:
DateTimeFormatter userFormatter
= DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG);
System.out.println(today.format(userFormatter));
Cuando ejecuté este fragmento hoy en la configuración regional de inglés de EE. UU., La salida fue:
13 de julio de 2019
Si lo desea más corto, especifique FormatStyle.MEDIUM
o incluso FormatStyle.SHORT
. DateTimeFormatter.ofLocalizedDate
usa la configuración regional de formato predeterminada, por lo que el punto es que dará una salida adecuada para esa configuración regional, diferente para diferentes configuraciones regionales.
Si su usuario tiene requisitos muy especiales para el formato de salida, use una cadena de patrón de formato:
DateTimeFormatter userFormatter = DateTimeFormatter.ofPattern(
"d-MMM-u", Locale.forLanguageTag("ar-AE"));
13 de abril de 2019
Estoy usando y recomendando java.time, la API de fecha y hora moderna de Java. DateFormat
, SimpleDateFormat
, Date
Y Calendar
se utiliza en la pregunta y / o muchas de las otras respuestas, están mal diseñados y largo anticuado. Y java.time es mucho más agradable para trabajar.
Pregunta: ¿Puedo usar java.time en Android?
Sí, java.time funciona bien en dispositivos Android más antiguos y nuevos. Solo requiere al menos Java 6 .
- En Java 8 y versiones posteriores y en dispositivos Android más nuevos (desde el nivel 26 de API), la API moderna viene incorporada.
- En Java 6 y 7, obtenga el Backport ThreeTen, el backport de las clases modernas (ThreeTen para JSR 310; vea los enlaces en la parte inferior).
- En Android (anterior) use la edición de Android de ThreeTen Backport. Se llama ThreeTenABP. Y asegúrese de importar las clases de fecha y hora
org.threeten.bp
con subpaquetes.
Enlaces
DateFormat
clase estaba bien cuando se hizo esta pregunta en 2011, esa clase y su subclaseSimpleDateFormat
siempre fueron problemáticas y ahora están desactualizadas. Le recomiendo que no los use y, en cambio, busque en java.time, la API moderna de fecha y hora de Java .