Java問:在任何一天,我想確定上週五(比如說)上漲的日期。 例如:如果我今天運行我的程序(即9月5日星期三),我應該得到結果爲「上週五在8月31日」。如果我在9月12日星期六運行它,結果應該是07年9月7日,依此類推(日期格式不是嚴格問題,儘管如此)確定某一天的某一天的日期
是否有任何可用的api,或者是否需要編寫根據當天的情況,這個計劃可以回溯很多天,等等?
謝謝!
Java問:在任何一天,我想確定上週五(比如說)上漲的日期。 例如:如果我今天運行我的程序(即9月5日星期三),我應該得到結果爲「上週五在8月31日」。如果我在9月12日星期六運行它,結果應該是07年9月7日,依此類推(日期格式不是嚴格問題,儘管如此)確定某一天的某一天的日期
是否有任何可用的api,或者是否需要編寫根據當天的情況,這個計劃可以回溯很多天,等等?
謝謝!
如何:
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)
值的模7。
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);
我最近開發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
你熟悉JodaTime? –
JODA(或)日曆 – kosa
可能的重複[如何獲取過去的星期日和即將到來的Java星期日?](http://stackoverflow.com/questions/4536230/how-to-get-the-past-sunday-和即將到來的星期日在Java)和[這](http://stackoverflow.com/q/10328584/642706)和[這](http://stackoverflow.com/q/22890644/642706)和其他許多人。 –