¿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?

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;
}

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

22
Calendar.getInstance().get(Calendar.DAY_OF_WEEK)

o

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

Igual que en Java, nada particular de Android.


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


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]);

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"

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];

}

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());

}

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"
   })
 }

-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;


8
No simplemente no. No.
Pkmmte

también puede usar fácilmente la clase Calendar para java y Kotlin
mahmoud Zahran
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.