¿Cuál es la forma más sencilla de obtener el día actual de la semana en Android?

114

¿Cuál sería la forma más sencilla de obtener el día actual de la semana en Android?

waa1990
fuente

Respuestas:

267

Utilice la Calendarclase Java .

Calendar calendar = Calendar.getInstance();
int day = calendar.get(Calendar.DAY_OF_WEEK); 

switch (day) {
    case Calendar.SUNDAY:
        // Current day is Sunday
        break;
    case Calendar.MONDAY:
        // Current day is Monday
        break;
    case Calendar.TUESDAY:
        // etc.
        break;
}
Kyle Ivey
fuente
Esto se puede aplicar en Java, no en Android. La clase "Calendar" es del paquete java.util
Navin Israni
7
@Navin Israni ¿Qué quieres decir? No veo ningún problema en el uso de java.util. El calendario se agrega en el nivel de API 1.
El increíble
33
Calendar calendar = Calendar.getInstance();
Date date = calendar.getTime();
// 3 letter name form of the day
System.out.println(new SimpleDateFormat("EE", Locale.ENGLISH).format(date.getTime()));
// full name form of the day
System.out.println(new SimpleDateFormat("EEEE", Locale.ENGLISH).format(date.getTime()));

Resultado (para hoy):

Se sentó
sábado

ACTUALIZACIÓN: java8

LocalDate date = LocalDate.now();
DayOfWeek dow = date.getDayOfWeek();
System.out.println("Enum = " + dow);

String dayName = dow.getDisplayName(TextStyle.FULL, Locale.ENGLISH);
System.out.println("FULL = " + dayName);

dayName = dow.getDisplayName(TextStyle.FULL_STANDALONE, Locale.ENGLISH);
System.out.println("FULL_STANDALONE = " + dayName);

dayName = dow.getDisplayName(TextStyle.NARROW, Locale.ENGLISH);
System.out.println("NARROW = " + dayName);

dayName = dow.getDisplayName(TextStyle.NARROW_STANDALONE, Locale.ENGLISH);
System.out.println("NARROW_STANDALONE = " + dayName);

dayName = dow.getDisplayName(TextStyle.SHORT, Locale.ENGLISH);
System.out.println("SHORT = " + dayName);

dayName = dow.getDisplayName(TextStyle.SHORT_STANDALONE, Locale.ENGLISH);
System.out.println("SHORT_STANDALONE = " + dayName);

Resultado (para hoy):

Enum = SATURDAY
FULL = Saturday
FULL_STANDALONE = Saturday
NARROW = S
NARROW_STANDALONE = 6
SHORT = Sat
SHORT_STANDALONE = Sat
Laszlo Hirdi
fuente
22
Calendar.getInstance().get(Calendar.DAY_OF_WEEK)

o

new GregorianCalendar().get(Calendar.DAY_OF_WEEK);

Igual que en Java, nada particular de Android.

LazyBitStream
fuente
2
esto devuelve un int
Himanshu Rawat
Puede comprobarlo en el Calendario
DOMINGO
16

Java 8 datetime APIlo hizo mucho más fácil:

LocalDate.now().getDayOfWeek().name()

Te devolverá el nombre del día como String

Salida: JUEVES

Mehraj Malik
fuente
2
¡Agradable! pero requiere API nivel 26 en Android
dnhyde
11
public String weekdays[] = new      DateFormatSymbols(Locale.ITALIAN).getWeekdays();
 Calendar c = Calendar.getInstance();
 Date date = new Date();
 c.setTime(date);
 int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);
 System.out.println(dayOfWeek);
 System.out.println(weekdays[dayOfWeek]);
DeepanshuJ
fuente
9

Si no desea usar la clase Calendar en absoluto, puede usar esta

String weekday_name = new SimpleDateFormat("EEEE", Locale.ENGLISH).format(System.currentTimeMillis());

es decir, el resultado es,

"Sunday"
Vyacheslav
fuente
5

Aquí está mi enfoque simple para obtener el día actual

public String getCurrentDay(){

    String daysArray[] = {"Sunday","Monday","Tuesday", "Wednesday","Thursday","Friday", "Saturday"};

    Calendar calendar = Calendar.getInstance();
    int day = calendar.get(Calendar.DAY_OF_WEEK);

    return daysArray[day];

}
Qadir Hussain
fuente
2
No estoy seguro de por qué, pero en mi caso, los números de días comienzan desde 1, no desde 0. Entonces, mi matriz se ve así:String[] days = {"?", "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
Dr. Failov
puede deshacerse del "?" luego comoint day = calendar.get(Calendar.DAY_OF_WEEK) - 1;
Qadir Hussain
4

Al usar ambos métodos, le resulta fácil si no dura siete días, usa (número del día actual + 7-1)% 7, (número del día actual + 7-2)% 7 ..... hasta 6

public static String getDayName(int day){
    switch(day){
        case 0:
            return "Sunday";
        case 1:
            return "Monday";
        case 2:
            return "Tuesday";
        case 3:
            return "Wednesday";
        case 4:
            return "Thursday";
        case 5:
            return  "Friday";
        case 6:
            return "Saturday";
    }

    return "Worng Day";
}
public static String getCurrentDay(){
    SimpleDateFormat dayFormat = new SimpleDateFormat("EEEE", Locale.US);
    Calendar calendar = Calendar.getInstance();
    return dayFormat.format(calendar.getTime());

}
Ram Bhawan Kushwaha
fuente
1

puede usar ese código para Kotlin, que usará la clase de calendario de java a Kotlin

    val day = Calendar.getInstance().get(Calendar.DAY_OF_WEEK)

    fun dayOfWeek() {
    println("What day is it today?")
    val day = Calendar.getInstance().get(Calendar.DAY_OF_WEEK)
    println( when (day) {
      1 -> "Sunday"
      2 -> "Monday"
      3 -> "Tuesday"
      4 -> "Wednesday"
      5 -> "Thursday"
      6 -> "Friday"
      7 -> "Saturday"
      else -> "Time has stopped"
   })
 }
Mahmoud Zahran
fuente
-10

Como DAY_OF_WEEK en la clase GregorianCalender es un campo estático, puede acceder a él directamente como sigue.

int dayOfWeek = GregorianCalender.DAY_OF_WEEK;

sunil koni
fuente
8
No simplemente no. No.
Pkmmte
también puede usar fácilmente la clase Calendar para java y Kotlin
mahmoud Zahran