Quel est le moyen le plus simple d'obtenir le jour de la semaine actuel dans Android?

114

Quel serait le moyen le plus simple d'obtenir le jour de la semaine actuel dans Android?

waa1990
la source

Réponses:

267

Utilisez la Calendarclasse 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
la source
Ceci est applicable à travers Java, pas Android. La classe "Calendar" provient du package java.util
Navin Israni
7
@Navin Israni Que voulez-vous dire? Je ne vois aucun problème lors de l'utilisation de java.util. Le calendrier est ajouté au niveau de l'API 1.
L'incroyable
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()));

Résultat (pour aujourd'hui):

Sam
samedi

MISE À JOUR: 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);

Résultat (pour aujourd'hui):

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

ou

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

Tout comme en Java, rien de particulier à Android.

LazyBitStream
la source
2
cela renvoie un int
Himanshu Rawat
Vous pouvez vérifier cela à partir de Calender.SUNDAY etc.
Shivam Tripathi
16

Java 8 a datetime APIrendu les choses beaucoup plus faciles:

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

Vous renverra le nom du jour comme String

Sortie: JEUDI

Mehraj Malik
la source
2
Agréable! mais nécessite le niveau d'API 26 dans 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
la source
9

Si vous ne souhaitez pas du tout utiliser la classe Calendar, vous pouvez utiliser ceci

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

c'est-à-dire que le résultat est,

"Sunday"
Vyacheslav
la source
5

Voici mon approche simple pour obtenir le jour actuel

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
la source
2
Je ne sais pas pourquoi, mais dans mon cas, les numéros de jour commencent à 1, pas à 0. Donc, mon tableau ressemble à ceci:String[] days = {"?", "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
Dr. Failov
vous pouvez vous débarrasser du "?" puis commeint day = calendar.get(Calendar.DAY_OF_WEEK) - 1;
Qadir Hussain
4

En utilisant les deux méthodes, vous trouverez facile si vous ne durerez pas sept jours que vous utilisez (numéro du jour actuel + 7-1)% 7, (numéro du jour actuel + 7-2)% 7 ..... jusqu'à 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
la source
1

vous pouvez utiliser ce code pour Kotlin que vous utiliserez la classe de calendrier de java dans 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
la source
-10

Comme DAY_OF_WEEK dans la classe GregorianCalender est un champ statique, vous pouvez y accéder directement comme des imbéciles

int dayOfWeek = GregorianCalender.DAY_OF_WEEK;

Sunil Koni
la source
8
Non, juste non. No.
Pkmmte
vous pouvez facilement utiliser la classe Calendar pour java et Kotlin aussi
mahmoud Zahran