40

私はこの方法で実際の曜日の名前を持つ文字列を取得しようとしました:

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

しかし、weekDay常にnullのままであり、デバッガーdayOfWeekが5であると言うので、実際には理由がわかりません。c.get(Calendar.THURSDAY)

4

6 に答える 6

64

私は次のようにしてこれを達成しました:

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

Calendar calendar = Calendar.getInstance();
weekDay = dayFormat.format(calendar.getTime());
  • 「EEEE」に曜日形式を使用すると、完全な曜日名、つまり火曜日が返されます
  • 「E」に曜日形式を使用すると、短縮名、つまり Tue が返されます。
  • Android でこの形式を返すもう 1 つの利点は、ロケールに基づいて曜日が変換されることです。

詳細については、 SimpleDateFormatを確認してください。これは、文字列値を取得することだけが必要な場合、 switchまたはifステートメントを必要としないという点で、最もクリーンなアプローチだと思います。

于 2013-11-21T11:21:12.673 に答える
3

次のことを行うだけです:

    Date date = new Date();
    CharSequence time = DateFormat.format("EEEE", date.getTime()); // gives like (Wednesday)
于 2014-10-22T09:04:39.880 に答える
2

これを試して

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());
于 2013-10-14T16:47:21.703 に答える