android - programa - Obtenga el día de la semana de GregorianCalendar
obtener el numero de semana de una fecha en java (3)
Tiempo de joda
Utilizo Joda-Time biblioteca Joda-Time para todas las operaciones relacionadas con la fecha / hora. Joda tiene en cuenta su ubicación y obtiene resultados en consecuencia:
import org.joda.time.DateTime;
DateTime date = new DateTime(year, month, day, 0, 0, 0);
o
DateTime date = DateTime().now();
Día de la semana (int):
date.getDayOfWeek();
Día de la semana (cadena corta) con las opciones toString()
y DateTimeFormat
:
date.toString("EE");
Tengo una fecha y necesito saber el día de la semana, así que utilicé un objeto GregorianCalendar pero obtengo algunas fechas incorrectas
GregorianCalendar calendar = new GregorianCalendar(year, month, day);
int i = calendar.get(Calendar.DAY_OF_WEEK);
¿Qué estoy haciendo mal?
¡Gracias!
SOLUCIÓN DE EDICIÓN:
mont--;
GregorianCalendar calendar = new GregorianCalendar(year, month, day);
int i = calendar.get(Calendar.DAY_OF_WEEK);
if(i == 2){
dayOfTheWeek = "Mon";
} else if (i==3){
dayOfTheWeek = "Tue";
} else if (i==4){
dayOfTheWeek = "Wed";
} else if (i==5){
dayOfTheWeek = "Thu";
} else if (i==6){
dayOfTheWeek = "Fri";
} else if (i==7){
dayOfTheWeek = "Sat";
} else if (i==1){
dayOfTheWeek = "Sun";
}
tl; dr
myGregCal // `GregorianCalendar` is a legacy class, supplanted by the modern `java.time.ZonedDateTime` class.
.toZonedDateTime() // Convert to `ZonedDateTime`.
.getDayOfWeek(). // Extract a `DayOfWeek` enum object, one of seven pre-defined objects, one for each day of the week.
.getDisplayName( // Automatically localize, generating a `String` to represent the name of the day of the week.
TextStyle.SHORT , // Specify how long or abbreviated.
Locale.US // Locale determines the human language and cultural norms used in localization.
) // Returns a `String` object.
Lun
LocalDate.now( ZoneId.of( "Africa/Tunis" ) ) // Get current date for people in a certain region, without time-of-day and without time zone.
.getDayOfWeek() // Extract a `DayOfWeek` enum object.
.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) // Generate a string representing that day-of-week, localized using the human language and cultural norms of a particular locale.
lundi
java.time
Convierta el objeto antiguo y problemático java.util.GregorianCalendar
en un objeto java.time moderno llamando a los nuevos métodos agregados a la clase anterior.
ZonedDateTime zdt = myGregCal.toZonedDateTime();
Obtenga el objeto de enumeración DayOfWeek
para ese momento en esa zona horaria.
DayOfWeek dow = zdt.getDayOfWeek();
dow.toString (): MIÉRCOLES
Pase estos objetos DayOfWeek
alrededor de su código en lugar de pasar enteros como 1-7 o cadenas como "MON". Al utilizar los objetos de enumeración, hace que su código se autodocumente, proporcione seguridad de tipos y garantice un rango de valores válidos.
Para hacer una presentación al usuario, solicite al objeto DayOfWeek
que traduzca el nombre del día de la semana a un idioma humano definido en una Locale
.
String output =
dow.getDisplayName(
TextStyle.FULL_STANDALONE ,
Locale.CANADA_FRENCH
)
;
mercredi
Acerca de java.time
El marco java.time está integrado en Java 8 y java.time posteriores. Estas clases sustituyen a las antiguas y problemáticas clases de fecha y hora como java.util.Date
, java.util.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 busca para muchos ejemplos y explicaciones. La especificación es JSR 310 .
Puede intercambiar objetos java.time directamente con su base de datos. Utilice un controlador JDBC compatible con JDBC 4.2 o posterior. No se necesitan cadenas, no se necesitan clases java.sql.*
.
¿Dónde obtener las clases java.time?
- Java SE 8 , Java SE 9 , Java SE 10 y posteriores
- Incorporado.
- Parte de la API de Java estándar con una implementación en paquete.
- Java 9 agrega algunas características menores y correcciones.
- Java SE 6 y Java SE 7
- Gran parte de la funcionalidad de java.time está respaldada a Java 6 y 7 en ThreeTen-Backport .
- Android
- Versiones posteriores de las implementaciones de paquetes de Android de las clases java.time .
- Para Android anterior (<26), el proyecto ThreeTen-Backport adapta ThreeTen-Backport (mencionado anteriormente). Vea Cómo usar ThreeTenABP… .
TimeZone timezone = TimeZone.getDefault();
Calendar calendar = new GregorianCalendar(timezone);
calendar.set(year, month, day, hour, minute, second);
String monthName=calendar.getDisplayName(Calendar.MONTH, Calendar.SHORT, Locale.getDefault());//Locale.US);
String dayName=calendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.SHORT, Locale.getDefault());//Locale.US);