java - sumar - Android Calendar obtiene el día actual de la semana como cadena
obtener fecha java calendar (6)
Esta pregunta ya tiene una respuesta aquí:
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)