web-dev-qa-db-fra.com

Android Calendrier obtenir le jour actuel de la semaine sous forme de chaîne

j'ai essayé d'obtenir une chaîne avec le nom du jour de la semaine actuel de cette façon:

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

mais weekDay reste toujours nul et je ne sais en fait pas pourquoi, car le débogueur dit que dayOfWeek est égal à 5 ​​et que je devrais être égal à c.get(Calendar.THURSDAY)

37
ntm

Aussi simple que cela

sCalendar = Calendar.getInstance();
String dayLongName = sCalendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.getDefault());
77
sandalone

J'ai accompli cela en procédant comme suit:

String weekDay;
SimpleDateFormat dayFormat = new SimpleDateFormat("EEEE", Locale.US);

Calendar calendar = Calendar.getInstance();
weekDay = dayFormat.format(calendar.getTime());
  • Utiliser le format de jour pour "EEEE" renverra le nom complet du jour de la semaine, c'est-à-dire mardi
  • Utiliser le format de jour pour "E" renverra le nom abrégé, c'est-à-dire mardi
  • Un autre avantage de renvoyer ce format dans Android est qu’il traduira le jour de la semaine en fonction des paramètres régionaux.

Vous voudrez passer en revue SimpleDateFormat pour en savoir plus. Je pense que c'est l'approche la plus propre en ce sens que vous n'avez pas besoin d'un commutateur ou si Si votre seul besoin est d’obtenir la valeur de chaîne.

60
Don Gossett

Vous êtes censé comparer dayOfWeek directement avec Calendar.MONDAY, etc. Voir code ci-dessous

De plus, j'ai mis des crochets autour de sinon. Ne vous fiez pas à l'indentation pour le flux de code, mettez explicitement des crochets même si votre if-else n'a qu'une seule instruction.

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

}
16
arun_gopalan

Il n'y avait pas besoin d'utiliser le 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);

et sortie:

thursday

Vous pouvez voir votre erreur si vous essayez d’imprimer les valeurs avec c.get avec ce code

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

Par exemple je reçois:

7
33
3
15
227
5
2013

Et le résultat sera incorrect, dans mon cas, j’aurai Sunday comme weekDay si j’utilise votre code.

2
Oscerd

faites juste ce qui suit:

    Date date = new Date();
    CharSequence time = DateFormat.format("EEEE", date.getTime()); // gives like (Wednesday)
2
Muhammed Refaat

essaye ça

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