usuario que programacion paso libros interfaz guis gui grafico grafica definicion con componentes java android date localization internationalization

java - que - Android: ¿cómo obtener el día actual de la semana(lunes, etc.) en el idioma del usuario?



programacion en java con interfaz grafica (8)

Quiero saber cuál es el día actual de la semana (lunes, martes ...) en el idioma local del usuario. Por ejemplo, "Lundi", "Mardi", etc., si el usuario es francés.

He leído esta publicación, pero solo devuelve un int, no una cadena con el día en el idioma del usuario: ¿Cuál es la forma más fácil de obtener el día actual de la semana en Android?

En términos más generales, ¿cómo se escriben todos los días de la semana y todos los meses del año en el idioma del usuario?

Creo que esto es posible, ya que, por ejemplo, la agenda de Google indica los días y meses escritos en el idioma local del usuario.

Gracias !!


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 posteriores y back-ported a Java 6 y 7 y a Android incluyen la práctica enum de DayOfWeek .

Los días están numerados según la definición estándar ISO 8601, 1-7 para lunes a domingo.

DayOfWeek dow = DayOfWeek.of( 1 );

Esta enumeración incluye el método getDisplayName para generar una cadena del nombre traducido local del día.

El objeto Locale especifica un lenguaje humano para ser utilizado en la traducción, y especifica normas culturales para decidir cuestiones tales como mayúsculas y puntuación.

String output = DayOfWeek.MONDAY.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ;

Para obtener la fecha de hoy, use la clase LocalDate . Tenga en cuenta que un huso horario es crucial ya que en cualquier momento dado la fecha varía alrededor del 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 problemas ortogonales distintos. 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 localización localizada de 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 posterior. Estas clases suplantan a las problemáticas antiguas clases legacy 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 para obtener muchos ejemplos y explicaciones. La especificación es JSR 310 .

¿Dónde obtener las clases de java.time?

  • Java SE 8 y SE 9 y posteriores
    • Incorporado.
    • Parte de la API Java estándar con una implementación integrada.
    • Java 9 agrega algunas características y correcciones menores.
  • Java SE 6 y SE 7
    • Gran parte de la funcionalidad de java.time se transfiere a Java 6 y 7 en ThreeTen-Backport .
  • Android
    • El proyecto ThreeTenABP adapta ThreeTen-Backport (mencionado anteriormente) específicamente para Android.
    • Consulte Cómo utilizar ThreeTenABP ....

Es lo que solía obtener los nombres del día ( 0-6 significa monday - sunday ):

public static String getFullDayName(int day) { Calendar c = Calendar.getInstance(); // date doesn''t matter - it has to be a Monday // I new that first August 2011 is one ;-) c.set(2011, 7, 1, 0, 0, 0); c.add(Calendar.DAY_OF_MONTH, day); return String.format("%tA", c); } public static String getShortDayName(int day) { Calendar c = Calendar.getInstance(); c.set(2011, 7, 1, 0, 0, 0); c.add(Calendar.DAY_OF_MONTH, day); return String.format("%ta", c); }


Para hacer las cosas más cortas, puedes usar esto:

android.text.format.DateFormat.format("EEEE", date);

que devolverá el día de la semana como una cadena.


Perdón por una respuesta tardía. Pero esto funcionaría correctamente.

daytext=(textview)findviewById(R.id.day); Calender c=Calender.getInstance(); SimpleDateFormat sd=new SimpleDateFormat("EEEE"); String dayofweek=sd.format(c.getTime()); daytext.setText(dayofweek);


Prueba esto...

//global declaration private TextView timeUpdate; Calendar calendar; ....... timeUpdate = (TextView) findViewById(R.id.timeUpdate); //initialize in onCreate() ....... //in onStart() calendar = Calendar.getInstance(); //date format is: "Date-Month-Year Hour:Minutes am/pm" SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy HH:mm a"); //Date and time String currentDate = sdf.format(calendar.getTime()); //Day of Name in full form like,"Saturday", or if you need the first three characters you have to put "EEE" in the date format and your result will be "Sat". SimpleDateFormat sdf_ = new SimpleDateFormat("EEEE"); Date date = new Date(); String dayName = sdf_.format(date); timeUpdate.setText("" + dayName + " " + currentDate + "");

El resultado es...

feliz codificación .....


Prueba esto:

int dayOfWeek = date.get(Calendar.DAY_OF_WEEK); String weekday = new DateFormatSymbols().getShortWeekdays()[dayOfWeek];


Sé que ya respondí, pero ¿quién busca ''Viernes'' como este

para viernes -

SimpleDateFormat sdf = new SimpleDateFormat("EEE"); Date d = new Date(); String dayOfTheWeek = sdf.format(d);

y quién quiere cadena de fecha completa, pueden usar 4E para el viernes

Para el viernes-

SimpleDateFormat sdf = new SimpleDateFormat("EEEE"); Date d = new Date(); String dayOfTheWeek = sdf.format(d);

Disfrutar...


Use SimpleDateFormat para formatear fechas y horas en una cadena legible para humanos, con respecto a la configuración regional de los usuarios.

Pequeño ejemplo para obtener el día actual de la semana (por ejemplo, "lunes") :

SimpleDateFormat sdf = new SimpleDateFormat("EEEE"); Date d = new Date(); String dayOfTheWeek = sdf.format(d);