Calendrier Android obtenir le jour courant de la semaine comme chaîne de caractères [dupliquer]

cette question a déjà une réponse ici:

j'ai essayé d'obtenir une chaîne avec le nom du jour de semaine réel 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 n'ai aucune idée de pourquoi parce que le débogueur dit que dayOfWeek est 5 donc je devrais être égal à c.get(Calendar.THURSDAY)

36
demandé sur ntm 2013-08-15 19:52:28

6 réponses

aussi simple que ceci

sCalendar = Calendar.getInstance();
String dayLongName = sCalendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.getDefault());
72
répondu sandalone 2014-04-24 10:58:12

j'ai accompli ceci en faisant ce qui suit:

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

Calendar calendar = Calendar.getInstance();
weekDay = dayFormat.format(calendar.getTime());
  • utilisez le format de jour pour "EEEE" retournera le nom complet du jour de la semaine, c.-à-d. mardi
  • utilisez le format de jour pour "E" retournera le nom abrégé, i.e. Tue
  • un autre avantage à retourner ce format dans Android est qu'il va traduire le jour de la semaine en fonction de la locale.

vous souhaitez voir la SimpleDateFormat pour en savoir plus. Je pense que c'est la meilleure approche que vous n'avez pas besoin d'un switch ou si déclaration si votre seul besoin est d'obtenir la valeur de la chaîne.

59
répondu Don Gossett 2013-11-21 11:21:12

vous êtes censé comparer dayOfWeek directement avec le calendrier.Lundi etc. Voir code ci-dessous

aussi, j'ai mis des crochets autour SI AUTREMENT. Ne vous fiez pas à l'indentation pour le flux de code, mettez explicitement des crochets même si votre if-else n'a qu'un seul énoncé.

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

}
15
répondu arun_gopalan 2013-08-15 15:59:38

faites juste ce qui suit:

    Date date = new Date();
    CharSequence time = DateFormat.format("EEEE", date.getTime()); // gives like (Wednesday)
2
répondu Muhammed Refaat 2014-10-22 09:04:39

essayez cette

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
répondu gifpif 2018-01-02 10:32:13

il n'était pas nécessaire 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, j'obtiens:

7
33
3
15
227
5
2013

et le résultat sera incorrect, dans mon cas je reçois Sunday comme weekDay si j'utilise votre code.

1
répondu Oscerd 2013-08-15 16:08:17