7

次のコードを使用して、日を文字列として取得しようとしました。しかし、間違った文字列を返します。このコードで修正できますか。

private String getDayOfWeek(int value){
    String day = "";
    switch(value){
    case 1:
        day="Sunday";
        break;
    case 2:
        day="Monday";
        break;
    case 3:
        day="Tuesday";
        break;
    case 4:
        day="Wednesday";
        break;
    case 5:
        day="Thursday";
        break;
    case 6:
        day="Friday";
        break;
    case 7:
        day="Saturday";
        break;
    }
    return day;

私はそれを次のように実装します

Calendar c = Calendar.getInstance();    
String dayOfWeek = getDayOfWeek(Calendar.DAY_OF_WEEK);
System.out.println(dayOfWeek);
4

8 に答える 8

17

使用する必要があります

String dayOfWeek = getDayOfWeek(c.get(Calendar.DAY_OF_WEEK));

以前やっていたこと

String dayOfWeek = getDayOfWeek(Calendar.DAY_OF_WEEK);

クラスが日付のフィールドを表すために使用しているランダムな定数(たまたま 7)でメソッドを呼び出しています。CalendarDAY_OF_WEEK

Calendar実際に探しているのは、インスタンスの曜日の値を取得することです。Calendar#get(int)

c.get(Calendar.DAY_OF_WEEK)

戻り値。


関連するメモとして、コメントに記載されているように、実際のデバッガーを学習して使用してみてください。

于 2013-09-18T21:15:05.303 に答える
13

calender オブジェクトから getdisplayname メソッドを使用します。

Calendar currentDate=new GregorianCalendar();

String dayOfWeek = currentDate.getDisplayName( Calendar.DAY_OF_WEEK ,Calendar.LONG, Locale.getDefault());
于 2015-03-30T11:36:46.840 に答える
10

曜日を取得する最良の方法は、次の単純なコード スニペットを使用することだと思います。

Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("EEEEE");
String dayOfWeek = dateFormat.format(date);
System.out.println(dayOfWeek);

カレンダーを使用する場合:

Calendar c = Calendar.getInstance();
SimpleDateFormat dateFormat = new SimpleDateFormat("EEEEE");
String dayOfWeek = dateFormat.format(c.getTime());
System.out.println(dayOfWeek);

形式 "EEEE" は曜日を返します: 日曜日、月曜日 .. マシンの言語で、コードを英語で修正することをお勧めします。

[更新しました]

Java 8+ と java.time パッケージの導入により、次の方法でこれを実現できます。

import java.time.DayOfWeek;
import java.time.LocalDateTime;
import java.time.format.TextStyle;
import java.util.Locale;

class Example {
  public static void main(String[] args) {
    final DayOfWeek dayOfWeek = LocalDateTime.now().getDayOfWeek();
    System.out.println(dayOfWeek.getDisplayName(TextStyle.FULL, Locale.US));
  }
}

目的のロケールで、TextStyle も選択します。

  • 満席: 金曜日
  • SHORT: 金
  • 狭い: F
于 2014-02-04T13:07:59.093 に答える
3

以下は、Java 1.8 Time API を使用した 2 行のスニペットです。

LocalDate localDate = LocalDate.of(Integer.valueOf(year),Integer.valueOf(month),Integer.valueOf(day));
String dayOfWeek = String.valueOf(localDate.getDayOfWeek());
于 2017-12-24T16:02:07.583 に答える
3

以下のメソッドを使用して、特定の日付を渡すことで曜日を取得できます。

ここで Calendar クラスの set メソッドについて、トリッキーな部分は month パラメータのインデックスが 0 から始まることです。

public static String getDay(int day, int month, int year) {

        Calendar cal = Calendar.getInstance();

        if(month==1){
            cal.set(year,0,day);
        }else{
            cal.set(year,month-1,day);
        }

        int dow = cal.get(Calendar.DAY_OF_WEEK);

        switch (dow) {
        case 1:
            return "SUNDAY";
        case 2:
            return "MONDAY";
        case 3:
            return "TUESDAY";
        case 4:
            return "WEDNESDAY";
        case 5:
            return "THURSDAY";
        case 6:
            return "FRIDAY";
        case 7:
            return "SATURDAY";
        default:
            System.out.println("GO To Hell....");
        }

        return null;
    }
于 2017-11-02T17:44:04.353 に答える