year week obtain number name monday day current java android error-handling calendar dayofweek

java - obtain - Compruebe si DAY_OF_WEEK es entre lunes y viernes



java get day of week monday (5)

Esto debería hacer el truco para ti, supongo.

int day = cal.get(Calendar.DAY_OF_WEEK); if (day >= Calendar.MONDAY && day <= Calendar.FRIDAY){ DAY = true; }else{ DAY = false; }

Estoy tratando de crear un método que verifique si "hoy" es entre el lunes y el viernes. Para esto obtengo con esta línea ''int day = Calendar.DAY_OF_WEEK;'' el dia real Después de eso, relleno un ArrayList con los días (lunes, martes, miércoles, jueves y viernes). Ahora, cuando verifico si el día real está en mi ArrayList, establezco el boolean DAY = true contrario, establezco el boolean DAY = false . Intenté el método hoy y ayer, pero siempre establece el valor booleano en falso.

¿Qué necesito para cambiar que mi código funcione? Encontrarás el código aquí abajo.

Código

int day = Calendar.DAY_OF_WEEK; ArrayList<Integer> daylist = new ArrayList<Integer>(); daylist.add(Calendar.MONDAY); daylist.add(Calendar.TUESDAY); daylist.add(Calendar.WEDNESDAY); daylist.add(Calendar.THURSDAY); daylist.add(Calendar.FRIDAY); if (daylist.contains(day)){ DAY = true; }else{ DAY = false; }


First Calendar.DAY_OF_WEEK es un campo entero que siempre le da 7. Necesita crear una instancia de un calendario como Calendar cal = Calendar.getInstance (); Por defecto, te da la fecha actual en la zona horaria actual. Luego puedes llamar a cal.get (Calendar.DAY_OF_WEEK); Lo que te dará cualquier día entre domingo y sábado.

Ahora puedes revisar algo como esto

if(cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY || cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY) { System.out.println("Weekend"); } else { System.out.println("Weekday"); }

Puedes aplicar esta lógica a tu problema !!


Wow, eso es como tratar de matar a un mosquito con una ojiva termonuclear :-)

Java garantiza (en 1.5) (sin cambios hasta 1.8 por lo menos) que los valores de SUNDAY a SATURDAY son contiguos (1 a 7), por lo que es una simple cuestión de verificar un rango.

Sin embargo, DAY_OF_WEEK no es el día de la semana, es un número de campo (con el valor 7) que se pasa al captador para recuperar el día de la semana. La única vez que Calendar.DAY_OF_WEEK coincidirá con un día real será los sábados.

Puede utilizar código como:

Calendar myDate = Calendar.getInstance(); // set this up however you need it. int dow = myDate.get (Calendar.DAY_OF_WEEK); boolean isWeekday = ((dow >= Calendar.MONDAY) && (dow <= Calendar.FRIDAY));

Después de esto, isWeekday cumplirá solo si el día de myDate fue de lunes a viernes inclusive.


int day = Calendar.DAY_OF_WEEK; en cambio debería ser

Calendar cal; // The calendar object ....your other code for getting the date goes here.... int day = cal.get(Calendar.DAY_OF_WEEK);

Su código actual solo obtiene el valor de la constante Calendar.DAY_OF_WEEK .


int day = Calendar.DAY_OF_WEEK;

La lógica está rota aquí. DAY_OF_WEEK es una constante que identifica qué tipo de datos necesitamos recuperar de una instancia de Calendar .

La solución más sencilla para su problema (desde Calendar.FIDAY> ...> Calendar.MONDAY) es

Calendar now = Calendar.getInstance(); int day = now.get(Calendar.DAY_OF_WEEK); if (day >= Calendar.MONDAY && day <= Calendar.FRIDAY) // do something