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?

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

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

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

ou

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

Tout comme en Java, rien de particulier à Android.


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


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

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"

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

}

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

}

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

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


8
Non, juste non. No.
Pkmmte

vous pouvez facilement utiliser la classe Calendar pour java et Kotlin aussi
mahmoud Zahran
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.