Obtén el día de la semana en GregorianCalendar
Tengo una cita y necesito saber el día de la semana, así que usé un objeto de GregorianCalendar pero vuelvo algunas fechas que son incorrectas.
GregorianCalendar calendar = new GregorianCalendar(year, month, day); int i = calendar.get(Calendar.DAY_OF_WEEK);
¿Qué estoy haciendo mal?
- ¿Cómo agregar eventos en google calendar usando la API de calendario usando android?
- Java.lang.IllegalArgumentException: Clase incorrecta: class java.util.GregorianCalendar
- Obtener la fecha actual como advertencia de cadena obsoleta toGmtString () issue
- Agregar evento semanal al calendario
- ¿Cómo puedo agregar un nuevo calendario de teléfono a Android?
¡Gracias!
EDITAR SOLUCIÓ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"; }
- Crear nuevo calendario sincronizado con api de Android
- Añadir evento en el calendario no funciona
- Comportamiento diferente de la clase Calendar en Java y Android
- Vista de calendario de Android
- Calendario de ActionBar spinner
- Android: ¿Cómo cambiar el color del dataselector en el widget Datepicker?
- Android - ¿Cómo configurar una notificación para una fecha específica en el futuro?
- Escucha los nuevos eventos del calendario
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);
Joda-Time
Utilizo la biblioteca Joda-Time para todas las operaciones relacionadas con la fecha / hora. Joda tiene en cuenta localidad 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) usando las opciones toString()
y DateTimeFormat
:
date.toString("EE");
Tl dr
myGregCal.toZonedDateTime().getDayOfWeek().getDisplayName( TextStyle.SHORT , Locale.US )
Java.time
Convierta el problemático antiguo legado java.util.GregorianCalendar
a un objeto moderno java.time llamando a nuevos métodos agregados a la antigua clase.
ZonedDateTime zdt = myGregCal.toZonedDateTime();
Obtener el objeto enum DayOfWeek
para ese momento en esa zona horaria.
DayOfWeek dow = zdt.getDayOfWeek();
Pase estos objetos DayOfWeek
alrededor de su código en lugar de pasar números enteros como 1-7 o cadenas como "MON". Mediante el uso de los objetos enum que hacer su código más auto-documentación, proporcionar seguridad de tipo y garantizar una gama de valores válidos.
Para la presentación al usuario, pida 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 );
Acerca de java.time
El framework java.time está integrado en Java 8 y posterior. Estas clases suplantan las viejas clases problemáticas de fecha y hora, como java.util.Date
, .Calendar
, y java.text.SimpleDateFormat
.
El proyecto Joda-Time , ahora en modo de mantenimiento , recomienda la migración a java.time.
Para obtener más información, consulte el Tutorial de Oracle . Y busca Stack Overflow para muchos ejemplos y explicaciones.
Gran parte de la funcionalidad de java.time se retroporta a Java 6 y 7 en ThreeTen-Backport y se adapta más a Android en ThreeTenABP .
El proyecto ThreeTen-Extra extiende java.time con clases adicionales. Este proyecto es un terreno probatorio para posibles adiciones futuras a java.time. Puede encontrar algunas clases útiles como Interval
, YearWeek
, YearQuarter
y más.