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)
Aussi simple que cela
sCalendar = Calendar.getInstance();
String dayLongName = sCalendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.getDefault());
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());
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.
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);
}
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.
faites juste ce qui suit:
Date date = new Date();
CharSequence time = DateFormat.format("EEEE", date.getTime()); // gives like (Wednesday)
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());