2017-02-12 7 views
0

選択した月の最初の日の曜日を取得しようとしています。主な条件はjava.timeだけです。選択した月の最初の日を取得する

DayOfWeek dayOfWeek = LocalDate.now().with(TemporalAdjusters.firstDayOfMonth()).getDayOfWeek(); 

私はすでに年月の数字を入力しています。私は月の最初の日のdayOfWeekを得ることができますか?私はこのようにそれをやった:

DayOfWeek dayOfWeek = yearMonth.atDay(1).getDayOfWeek(); 

しかし、私は、ライブラリjava.timeを使用して正しいことで解消する必要がある「マジックナンバー」を持っていることを解説し、得ました。あなたは月と年を持っていて、ちょうど私がこのような何かをするだろう、月の最初の日を必要とする場合

答えて

0

は:基本的に

DayOfWeek firstDay = LocalDate.of(year, month, 1).getDayOfWeek(); 

dayOfMonth paramは1

ある場合は、日付を構築します yearMonthを想定した月の最初の日のためのソリューションに基づいて

が、これは動作するはずLocalDate次のとおりです。

DayOfWeek dayOfWeek =yearMonth.with(TemporalAdjusters.firstDayOfMonth()).getDayOfWeek(); 
System.out.println(dayOfWeek); 
+0

なぜ私は今日のdayOfWeekを(例えば)1997年1月の最初の日にする必要がありますか? –

+0

@IlyaTomashenkoあなたはしません。私は今例として使用しています。 – user1121883

+0

はうまく見えますが、 'yearMonth.with(TemporalAdjusters.firstDayOfMonth())'は 'YearMonth'を返し、' .getDayOfWeek() 'はありません。簡単です。とにかくありがとうございました。 –

0

H EREはちょうどLOCALDATEオブジェクトを渡すことによって解決される:

public static String getFirstWeekDay(LocalDate date) { 

     int day = 1; 
     int month = date.getMonthValue(); 
     int year = date.getYear(); 

     LocalDate newDate = LocalDate.of(year, month, day); 
     String dayOfWeek = newDate.getDayOfWeek().toString(); 

     return dayOfWeek; 
} 

また、あなたはのDayOfWeek列挙型を取得するには、以下の方法を使用することができます。

public static DayOfWeek getFirstWeekDay(LocalDate date){ 

     int day = 1; 
     int month = date.getMonthValue(); 
     int year = date.getYear(); 

     LocalDate newDate = LocalDate.of(year, month, day); 

     return newDate.getDayOfWeek(); 
} 

を、私はこのことができます願っています。

関連する問題