0

Java Q: 任意の日に、(たとえば) 先週の金曜日が属する日付を特定したいと考えています。例: 今日 (つまり、2012 年 9 月 5 日水曜日) にプログラムを実行すると、「先週の金曜日は 2012 年 8 月 31 日でした」という結果が得られるはずです。2012 年 9 月 8 日土曜日に実行すると、結果は 2012 年 9 月 7 日となるはずです (ただし、ここでは日付の形式は厳密には問題になりません)。

利用可能なAPIはありますか、それとも現在の日付などに基づいて何日もさかのぼってプログラムを作成する必要がありますか?

ありがとうございました!

4

3 に答える 3

3

これはどう:

Calendar cal = Calendar.getInstance();
int day = cal.get(Calendar.DAY_OF_WEEK);
cal.add(Calendar.DAY_OF_MONTH, -((day + 1) % 7));
Date lastFriday = cal.getTime();

現在の日付の Calendar.DAY_OF_WEEK 値に 1 を加えた値を減算することで、いつでも前の金曜日に戻ることができます。たとえば、現在の日が月曜日 (値 = 2) で、(2 + 1) を減算すると、3 に戻ります日から金曜日。火曜日に同じことをすると、(3 + 1) 日、つまり金曜日にもさかのぼります。

現在の日が金曜日または土曜日の場合、それぞれ 0 日または 1 日だけ戻るようにする必要があるため、(day + 1)値の mod 7 を取得します。

于 2012-09-05T14:36:54.057 に答える
0

私は最近、このユースケース用に特別に設計されたLamma Dateを開発しました。

new Date(2014, 7, 1).previous(DayOfWeek.FRIDAY); // 2014-06-27
new Date(2014, 7, 2).previous(DayOfWeek.FRIDAY); // 2014-06-27
new Date(2014, 7, 3).previous(DayOfWeek.FRIDAY); // 2014-06-27
new Date(2014, 7, 4).previous(DayOfWeek.FRIDAY); // 2014-06-27
new Date(2014, 7, 5).previous(DayOfWeek.FRIDAY); // 2014-07-04
new Date(2014, 7, 6).previous(DayOfWeek.FRIDAY); // 2014-07-04
new Date(2014, 7, 7).previous(DayOfWeek.FRIDAY); // 2014-07-04
于 2014-06-29T20:16:35.043 に答える
0
int day = cal.get(Calendar.DAY_OF_WEEK);  
int dayDiff = (day+1)%7;  
if(dayDiff == 0)  
  dayDiff = 7;  
cal.add(Calendar.DAY_OF_MONTH, - dayDiff);
于 2012-09-05T15:27:26.330 に答える