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