¿Cómo puedo encontrar el DateFormat
para un Locale
dado?Formato de fecha Java para configuración regional
Respuesta
DateFormat.getDateInstance(int,Locale)
Por ejemplo:
import static java.text.DateFormat.*;
DateFormat f = getDateInstance(SHORT, Locale.ENGLISH);
continuación, puede utilizar este objeto a formato Date
s:
String d = f.format(new Date());
Si realmente quiere saber el patrón subyacente (por ejemplo yyyy-MMM-dd
) a continuación, como obtendrá un objeto SimpleDateFormat
atrás:
SimpleDateFormat sf = (SimpleDateFormat) f;
String p1 = sf.toPattern();
String p2 = sf.toLocalizedPattern();
No creo que haya una garantía de que DateFormat.getDateInstance (...) devuelva un objeto SimpleDateFormat, por lo que convertir el resultado a SimpleDateFormat podría ser peligroso (podría no funcionar en otra implementación de Java que la implementación de Sun, o podría ni siquiera trabaje en una versión diferente de la implementación de Sun). – Jesper
Esto es muy cierto, no hay garantía. Pero será un 'SimpleDateFormat' en la práctica –
FYI, las antiguas clases problemáticas de fecha y hora como' java.text.SimpleDateFormat' ahora son [legacy] (https://en.wikipedia.org/wiki/Legacy_system), suplantado por las clases [java.time] (https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html). Consulte [Tutorial de Oracle] (https://docs.oracle.com/javase/tutorial/datetime/TOC.html). –
¿Hay alguna otra manera (sin usar el molde SimpleDateFormat) para recuperar el patrón predeterminado para un objeto de configuración regional determinado?
Crea una nueva publicación si necesitas hacer una pregunta o haz la pregunta en la sección de comentarios. Estos están reservados para las respuestas a la publicación original. – hfontanez
tl; dr
DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL)
.withLocale(Locale.CANADA_FRENCH);
java.time
Las clases originales de fecha y hora son ahora legado y han sido suplantada por las clases java.time.
El DateTimeFormatter
tiene una forma simple de localizar automáticamente por Locale
al generar una cadena para representar el valor de la fecha y hora. Especifique un FormatStyle
para indicar la duración del resultado (abreviado o no).
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL);
f = f.withLocale(Locale.CANADA_FRENCH);
Obtén el momento actual. Tenga en cuenta que Locale
y la zona horaria no tienen nada que ver entre sí. Uno determina la presentación, el otro se ajusta en un particular wall-clock time. Por lo tanto, puede tener un huso horario en Nueva Zelanda con un Locale
de japonés, o en este caso un huso horario en India con una presentación formateada para que lea una persona quebequense.
ZoneId z = ZoneId.of("Asia/Kolkata");
ZonedDateTime zdt = ZonedDateTime.now(z);
Genera una cadena utilizando ese objeto formateador de localización.
String output = zdt.format(f);
Sobre java.time
El marco java.time está incorporado en Java 8 y versiones posteriores. Estas clases suplantan a las viejas y problemáticas clases de fecha y hora legacy, como java.util.Date
, Calendar
, & SimpleDateFormat
.
El proyecto Joda-Time, ahora en maintenance mode, recomienda la migración a las clases java.time.
Para obtener más información, consulte el Oracle Tutorial. Y busque Stack Overflow para obtener muchos ejemplos y explicaciones. La especificación es JSR 310.
¿Dónde obtener las clases java.time?
- Java SE 8, Java SE 9, y más tarde
- incorporado.
- Parte de la API estándar de Java con una implementación integrada.
- Java 9 agrega algunas características menores y correcciones.
- Java SE 6 y Java SE 7
- Gran parte de la funcionalidad de back-java.time está portado a Java 6 & 7 en ThreeTen-Backport.
- Android
- El proyecto ThreeTenABP adapta ThreeTen-Backport (mencionado anteriormente) para Android específicamente.
- Ver How to use ThreeTenABP….
El proyecto se extiende ThreeTen-Extra java.time con clases adicionales. Este proyecto es un terreno de prueba para posibles adiciones futuras a java.time. Puede encontrar algunas clases útiles aquí, como Interval
, YearWeek
, YearQuarter
y more.
- 1. Formato de fecha de configuración regional en Python
- 2. cambiar la configuración regional de la fecha
- 3. Java: el formato de flotación depende de la configuración regional
- 4. PHP: formato de número de configuración regional
- 5. Configuración de la configuración regional de Java
- 6. La configuración regional no existe en Java
- 7. ¿Cómo validar una configuración regional en Java?
- 8. Cómo formateo una moneda para una configuración regional en Java
- 9. Formato de fecha JAVA
- 10. Formato de fecha según la configuración regional del usuario en android
- 11. ¿Falta la configuración regional en Java?
- 12. Cambiar la configuración de idioma (configuración regional) para el dispositivo
- 13. Mostrar fecha y hora en la configuración regional del usuario
- 14. Cómo obtener el patrón de fecha de la zona horaria de la configuración regional en Java
- 15. Código de configuración regional para hebreo/¿Referencia a otros códigos de configuración regional?
- 16. Configuración regional en Android
- 17. Cambiar configuración regional para django-admin-herramientas
- 18. Nombres de configuración regional válidos
- 19. ¿Depende de la configuración regional SimpleDateFormat?
- 20. Caracteres de índice específicos de configuración regional
- 21. ¿Cómo determinar si el formato de fecha de la configuración regional es Mes/Día o Día/Mes?
- 22. Obtenga el formato de moneda para un país que no tiene una configuración regional constante
- 23. C# DateTime, ¿es segura la configuración regional de este método?
- 24. String.Format considere la configuración regional o no?
- 25. Java junit test change Configuración regional en Spring SimpleFormController
- 26. Problema con formato de fecha en Java
- 27. Configuración del formato de la celda de fecha en excel xml
- 28. Fecha y hora de formato según la zona
- 29. Formato de fecha de Java a formato de fecha de JavaScript
- 30. Obtener la cadena de la configuración regional predeterminada mediante una cadena en la configuración regional específica
FYI, las antiguas clases problemáticas de fecha y hora como 'DateFormat' ahora son [legacy] (https://en.wikipedia.org/wiki/Legacy_system), suplantadas por [java.time] (https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html) classes. Consulte [Tutorial de Oracle] (https://docs.oracle.com/javase/tutorial/datetime/TOC.html). –