una sumar semana obtener numero fecha dias actual java android calendar null dayofweek

java - sumar - Android Calendar obtiene el día actual de la semana como cadena



obtener fecha java calendar (6)

Traté de obtener una cadena con el nombre del día de la semana real de esta manera:

Calendar c = Calendar.getInstance(); int dayOfWeek = c.get(Calendar.DAY_OF_WEEK); if (c.get(Calendar.MONDAY) == dayOfWeek) weekDay = "monday"; else if (c.get(Calendar.TUESDAY) == dayOfWeek) weekDay = "tuesday"; else if (c.get(Calendar.WEDNESDAY) == dayOfWeek) weekDay = "wednesday"; else if (c.get(Calendar.THURSDAY) == dayOfWeek) weekDay = "thursday"; else if (c.get(Calendar.FRIDAY) == dayOfWeek) weekDay = "friday"; else if (c.get(Calendar.SATURDAY) == dayOfWeek) weekDay = "saturday"; else if (c.get(Calendar.SUNDAY) == dayOfWeek) weekDay = "sunday";

pero weekDay permanece siempre nulo y en realidad no tengo idea de por qué porque el depurador dice que dayOfWeek es 5, así que debería ser igual a c.get(Calendar.THURSDAY)


No hubo necesidad de usar el c.get

Calendar c = Calendar.getInstance(); int dayOfWeek = c.get(Calendar.DAY_OF_WEEK); if (Calendar.MONDAY == dayOfWeek) weekDay = "monday"; else if (Calendar.TUESDAY == dayOfWeek) weekDay = "tuesday"; else if (Calendar.WEDNESDAY == dayOfWeek) weekDay = "wednesday"; else if (Calendar.THURSDAY == dayOfWeek) weekDay = "thursday"; else if (Calendar.FRIDAY == dayOfWeek) weekDay = "friday"; else if (Calendar.SATURDAY == dayOfWeek) weekDay = "saturday"; else if (Calendar.SUNDAY == dayOfWeek) weekDay = "sunday"; System.out.println(weekDay);

y salida:

thursday

Puede ver su error si intenta imprimir los valores con c.get con este código

System.out.println(c.get(Calendar.MONDAY)); System.out.println(c.get(Calendar.TUESDAY)); System.out.println(c.get(Calendar.WEDNESDAY)); System.out.println(c.get(Calendar.THURSDAY)); System.out.println(c.get(Calendar.FRIDAY)); System.out.println(c.get(Calendar.SATURDAY)); System.out.println(c.get(Calendar.SUNDAY));

Por ejemplo, obtengo:

7 33 3 15 227 5 2013

Y el resultado será incorrecto, en mi caso recibo el Sunday como weekDay si uso tu código.


Se supone que debes comparar dayOfWeek directamente con Calendar.MONDAY, etc. Ver código a continuación

Además, he puesto corchetes si más. No confíe en la sangría para el flujo de código, ponga explícitamente corchetes, incluso si su if-else tiene solo una declaración.

public static void main(String[] args) { String weekDay = ""; Calendar c = Calendar.getInstance(); int dayOfWeek = c.get(Calendar.DAY_OF_WEEK); if (Calendar.MONDAY == dayOfWeek) { weekDay = "monday"; } else if (Calendar.TUESDAY == dayOfWeek) { weekDay = "tuesday"; } else if (Calendar.WEDNESDAY == dayOfWeek) { weekDay = "wednesday"; } else if (Calendar.THURSDAY == dayOfWeek) { weekDay = "thursday"; } else if (Calendar.FRIDAY == dayOfWeek) { weekDay = "friday"; } else if (Calendar.SATURDAY == dayOfWeek) { weekDay = "saturday"; } else if (Calendar.SUNDAY == dayOfWeek) { weekDay = "sunday"; } System.out.println(weekDay); }


prueba esto

import java.text.DateFormatSymbols; import java.util.Date; ... String[] weekdays = new DateFormatSymbols().getWeekdays(); String[] month = new DateFormatSymbols().getMonths(); System.outprintln(weekdays[date.getDay()+1]+","+month[date.getMonth()]+" "+date.getDate());

Espero que thiscode te ayude. :)


Lo logré haciendo lo siguiente:

String weekDay; SimpleDateFormat dayFormat = new SimpleDateFormat("EEEE", Locale.US); Calendar calendar = Calendar.getInstance(); weekDay = dayFormat.format(calendar.getTime());

  • Utilice el formato de día para "EEEE" devolverá el nombre completo del día de la semana, es decir, los martes
  • Utilice el formato de día para "E" devolverá el nombre abreviado, es decir, Tue
  • Otro beneficio de devolver este formato en Android es que traducirá el día de la semana según la configuración regional.

Deseará revisar SimpleDateFormat para obtener más información. Creo que este es el enfoque más limpio en el sentido de que no necesita un cambio o una declaración si su única necesidad es obtener el valor de la cadena.


Tan simple como esto

sCalendar = Calendar.getInstance(); String dayLongName = sCalendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.getDefault());


solo haz lo siguiente:

Date date = new Date(); CharSequence time = DateFormat.format("EEEE", date.getTime()); // gives like (Wednesday)