En Java, cómo obtener cadenas de días de la semana (Sun, Mon, …, Sat) con el sistema de configuración por defecto (idioma)
La forma más sencilla:
String[] namesOfDays = new String[7] { "SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT" };
Este método no utiliza la configuración regional. Por lo tanto, si el idioma del sistema no es el inglés, este método no funciona correctamente.
- Intervalo de tiempo límite en el selector de tiempo
- Problemas con zona horaria incorrecta en Android
- Serializar objeto personalizado que contiene objetos JodaTime en JSON
- Uso de ORM de azúcar con UUID o Joda-Time
- ProGuard no compiló con Joda Time utilizado en Windows
Usando el tiempo de Joda, podemos hacer esto:
String[] namesOfDays = new String[7]; LocalDate now = new LocalDate(); for (int i=0; i<7; i++) { /* DateTimeConstants.MONDAY = 1, TUESDAY = 2, ..., SUNDAY = 7 */ namesOfDays[i] = now.withDayOfWeek((DateTimeConstants.SUNDAY + i - 1) % 7 + 1) .dayOfWeek().getAsShortText(); }
Sin embargo, este método utiliza la fecha de hoy y los cálculos de calendario, que son inútiles para el propósito final. Además, es un poco complicado.
¿Hay una manera fácil de obtener cadenas como Sun, Mon, …, Sat con la configuración predeterminada del sistema?
- Jodatime inicio del día y fin del día
- ¿Cómo clonar Joda DateTime?
- Tener problemas para conseguir Joda-tiempo para ejecutar en Android.
- No se puede generar APK firmado con proguard habilitado cuando se usa Joda Time
- Uso de la biblioteca Joda-Time para convertir la cadena al formato DateTime en Google Tasks API
- Recursos de la biblioteca con Robolectric 3 - JodaTime
- joda tiempo consumir demasiada memoria
- Android: Proguard no compiló con el archivo jar de Joda Time
Si no te he entendido mal
calendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.SHORT, Locale.US);
Es lo que usted está buscando. Aquí puede encontrar la documentación,
O también puedes usar, getShortWeekdays ()
String[] namesOfDays = DateFormatSymbols.getInstance().getShortWeekdays()
Date now = new Date(); // EEE gives short day names, EEEE would be full length. SimpleDateFormat dateFormat = new SimpleDateFormat("EEE", Locale.US); String asWeek = dateFormat.format(now);
Puede crear la fecha con la fecha y la hora deseadas. Y lograr lo que quieres.
Tl dr
DayOfWeek.MONDAY.getDisplayName( TextStyle.SHORT , Locale.getDefault() )
Java.time
El proyecto Joda-Time , ahora en modo de mantenimiento , recomienda la migración a las clases java.time . Gran parte de java.time está retro-portado a Android (ver más abajo).
DayOfWeek
El enum de DayOfWeek
define siete objetos, uno para cada día de la semana. La clase ofrece varios métodos útiles incluyendo getDisplayName
para generar una cadena con nombre de día localizado.
Para localizar, especifique:
-
TextStyle
para determinar cuánto tiempo o abreviado debe ser la cadena. -
Locale
para determinar (a) el lenguaje humano para la traducción del nombre del día, nombre del mes, y tal, y (b) las normas culturales que deciden las cuestiones de la abreviatura, la capitalización, la puntuación, los separadores, etc.
Ejemplo:
String output = DayOfWeek.MONDAY.getDisplayName( TextStyle.SHORT , Locale.CANADA_FRENCH );
Puede utilizar la zona horaria predeterminada actual de JVM en lugar de especificar una. Pero tenga en cuenta el riesgo: La zona predeterminada se puede cambiar en cualquier momento durante la ejecución por cualquier código en cualquier subproceso de cualquier aplicación que se ejecuta dentro de la JVM.
Locale locale = Locale.getDefault() ; String output = DayOfWeek.MONDAY.getDisplayName( TextStyle.SHORT , locale );
Acerca de java.time
El framework java.time está integrado en Java 8 y posterior. Estas clases suplantan las viejas clases de fecha-hora heredadas , como java.util.Date
, Calendar
y SimpleDateFormat
.
El proyecto Joda-Time , ahora en modo de mantenimiento , recomienda la migración a las clases java.time .
Para obtener más información, consulte el Tutorial de Oracle . Y busca Stack Overflow para muchos ejemplos y explicaciones. La especificación es JSR 310 .
Dónde obtener las clases java.time?
- Java SE 8 y SE 9 y posterior
- 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 retroporta a Java 6 & 7 en ThreeTen-Backport .
- Androide
- El proyecto ThreeTenABP adapta específicamente a ThreeTen-Backport (mencionado anteriormente) para Android.
- Consulte Cómo utilizar ThreeTenABP ….
Por favor, intente esto
public static String[] namesOfDays = {"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"}; int day = Calendar.getInstance().get(Calendar.DAY_OF_WEEK); System.out.println("Day := "+namesOfDays[day-1]);
- Indicador de progreso de la barra de acción y botón de actualización
- Android: Recuperación de preferencias compartidas de otra aplicación