tl; dr
String output =
LocalDate.now( ZoneId.of( "America/Montreal" ) )
.getDayOfWeek()
.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ;
java.time
Las clases java.time integradas en Java 8 y versiones posteriores y adaptadas a Java 6 y 7 y a Android incluyen la práctica DayOfWeek
enumeración.
Los días están numerados de acuerdo con la definición estándar ISO 8601, de 1 a 7 de lunes a domingo.
DayOfWeek dow = DayOfWeek.of( 1 );
Esta enumeración incluye el getDisplayName
método para generar una cadena del nombre traducido localizado del día.
El Locale
objeto especifica un lenguaje humano que se utilizará en la traducción y especifica las normas culturales para decidir cuestiones como las mayúsculas y la puntuación.
String output = DayOfWeek.MONDAY.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ;
Para obtener la fecha de hoy, use la LocalDate
clase. Tenga en cuenta que una zona horaria es crucial, ya que en un momento dado la fecha varía en todo el mundo.
ZoneId z = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( z );
DayOfWeek dow = today.getDayOfWeek();
String output = dow.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ;
Tenga en cuenta que la configuración regional no tiene nada que ver con la zona horaria. Hay dos cuestiones ortogonales distintas separadas. Es posible que desee una presentación en francés de una fecha y hora dividida en zonas en la India ( Asia/Kolkata
).
Joda-Time
ACTUALIZACIÓN: El proyecto Joda-Time , ahora en modo de mantenimiento , aconseja la migración a las clases java.time .
La biblioteca Joda-Time proporciona Locale
una localización impulsada por los valores de fecha y hora.
DateTimeZone zone = DateTimeZone.forID( "America/Montreal" );
DateTime now = DateTime.now( zone );
Locale locale = Locale.CANADA_FRENCH;
DateTimeFormatter formatterUnJourQuébécois = DateTimeFormat.forPattern( "EEEE" ).withLocale( locale );
String output = formatterUnJourQuébécois.print( now );
System.out.println("output: " + output );
salida: samedi
Acerca de java.time
El marco java.time está integrado en Java 8 y versiones posteriores. Estas clases suplantar la vieja problemáticos heredados clases de fecha y hora como java.util.Date
, Calendar
, y SimpleDateFormat
.
El proyecto Joda-Time , ahora en modo de mantenimiento , aconseja la migración a las clases java.time .
Para obtener más información, consulte el tutorial de Oracle . 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 y SE 9 y posteriores
- Incorporado.
- Parte de la API estándar de Java con una implementación integrada.
- Java 9 agrega algunas funciones y correcciones menores.
- Java SE 6 y SE 7
- Gran parte de la funcionalidad de java.time está adaptada a Java 6 y 7 en ThreeTen-Backport .
- Androide