web-dev-qa-db-ja.com

Androidカレンダーは現在の曜日を文字列として取得します

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

_            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)と等しくなければならないと言っているため、実際には理由がわかりません。

37
ntm

これと同じくらい簡単

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

私はこれを次のことで達成しました。

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

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

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

60
Don Gossett

DayOfWeekをCalendar.MONDAYなどと直接比較することになっています。以下のコードを参照してください

また、他の場合は括弧を付けました。コードフローのインデントに依存しないでください。if-elseにステートメントが1つしかない場合でも、括弧を明示的に入れてください。

    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

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

および出力:

thursday

このコードでc.getを使用して値を印刷しようとすると、エラーが表示されます

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

たとえば、次のようになります:

7
33
3
15
227
5
2013

そして、結果は不正確になります。私の場合、コードを使用すると、SundayweekDayとして取得されます。

2
Oscerd

以下を実行してください:

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

これを試して

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