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?
De manera más general, ¿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 da los días y meses escritos en el idioma local del usuario.
Gracias !!
fuente
DateFormatSymbols.getInstance()
(aunque por ahora podría dar el mismo resultado).Ya sé que respondió pero quien busca 'Vie' así
para el viernes
SimpleDateFormat sdf = new SimpleDateFormat("EEE"); Date d = new Date(); String dayOfTheWeek = sdf.format(d);
y quién quiere una cadena de fecha completa, puede usar 4E para el viernes
Para el viernes-
SimpleDateFormat sdf = new SimpleDateFormat("EEEE"); Date d = new Date(); String dayOfTheWeek = sdf.format(d);
Disfrutar...
fuente
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.
fuente
Suyo es lo que solía obtener los nombres de los días (
0-6
mediosmonday - 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); }
fuente
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.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 );
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
, ySimpleDateFormat
.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?
fuente
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...
codificación feliz .....
fuente
Perdón por la 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);
fuente
Solo uso esta solución en Kotlin:
var date : String = DateFormat.format("EEEE dd-MMM-yyyy HH:mm a" , Date()) as String
fuente
Si está utilizando la biblioteca de fechas ThreetenABP bt Jake Warthon, puede hacer:
en tu
dayOfWeek
instancia. Más en: https://github.com/JakeWharton/ThreeTenABP https://www.threeten.org/threetenbp/apidocs/org/threeten/bp/format/TextStyle.htmlfuente
//selected date from calender SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy"); //Date and time String currentDate = sdf.format(myCalendar.getTime()); //selcted_day name SimpleDateFormat sdf_ = new SimpleDateFormat("EEEE"); String dayofweek=sdf_.format(myCalendar.getTime()); current_date.setText(currentDate); lbl_current_date.setText(dayofweek); Log.e("dayname", dayofweek);
fuente
SimpleDateFormat
,Date
yCalendar
(también se usa en la pregunta).