我想使用java中的當前日期來標識整個星期的日期(從星期日到星期六)。如何識別java中當前日期的一週
例如:今天是星期二 - 這意味着我需要週二,週一和週日的日期。
如果當天是星期三 - 那麼我需要從星期天到星期三的日期。
如何在java中實現這個邏輯?
我可以從當前日期開始獲得星期的開始,但我不知道如何從星期開始日期獲取剩餘日期。有沒有任何Java工具可用於此?
我想使用java中的當前日期來標識整個星期的日期(從星期日到星期六)。如何識別java中當前日期的一週
例如:今天是星期二 - 這意味着我需要週二,週一和週日的日期。
如果當天是星期三 - 那麼我需要從星期天到星期三的日期。
如何在java中實現這個邏輯?
我可以從當前日期開始獲得星期的開始,但我不知道如何從星期開始日期獲取剩餘日期。有沒有任何Java工具可用於此?
作爲參考,用來配製輸出當前日期是星期三,2015年7月22日(22/07/2015)
LocalDate ld = LocalDate.now();
LocalDate sunday = ld.minusDays(ld.getDayOfWeek().getValue());
LocalDate tommorrow = ld.plusDays(1);
LocalDate date = sunday;
while (date.isBefore(tommorrow)) {
System.out.println(date);
date = date.plusDays(1);
}
打印
2015-07-19
2015-07-20
2015-07-21
2015-07-22
作爲替代
(這基本上將所有上述其他API的工作),你可以簡單地從今天倒着走......
LocalDate date = LocalDate.now();
do {
System.out.println(date);
date = date.minusDays(1);
} while (date.getDayOfWeek() != DayOfWeek.SATURDAY);
打印
2015-07-22
2015-07-21
2015-07-20
2015-07-19
LocalDate now = LocalDate.now();
LocalDate sunday = now.minusDays(5).withDayOfWeek(DateTimeConstants.SUNDAY);
LocalDate tommorrow = now.plusDays(1);
LocalDate date = sunday;
while (date.isBefore(tommorrow)) {
System.out.println(date);
date = date.plusDays(1);
}
打印
2015-07-19
2015-07-20
2015-07-21
2015-07-22
作爲最後的手段。但要記住,Calendar
攜帶的時間信息,所以使用before
,after
和equals
可能並不總是做你認爲他們應該...
Calendar cal = Calendar.getInstance();
cal.setFirstDayOfWeek(Calendar.SUNDAY);
cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
Calendar today = Calendar.getInstance();
while (cal.before(today)) {
System.out.println(cal.getTime());
cal.add(Calendar.DATE, 1);
}
打印
Sun Jul 19 15:01:49 EST 2015
Mon Jul 20 15:01:49 EST 2015
Tue Jul 21 15:01:49 EST 2015
Wed Jul 22 15:01:49 EST 2015
這是使用Java 8。但是,請注意很容易的,在ISO-8601標準表示Monday
當週... See the JavaDocs的第一天......所以要實現你的要求,你只需找到Monday
的基本情況...
DayOfWeek是一個枚舉,表示一週的7天 - 週一,週二,週三,週四,週五,週六和週日。
除了文本枚舉名稱之外,每個星期的每一天都有一個int值。 int值遵循ISO-8601標準,從1(星期一)到7(星期日)。建議應用程序使用枚舉而不是int值來確保代碼清晰。
/**
* @author Edward Beckett :: <[email protected]>
* @since :: 7/22/2015
*/
public class WeekOfToday{
public static void main(String[] args) {
Integer dayOfWeek = LocalDate.now().getDayOfWeek().compareTo(DayOfWeek.MONDAY) ;
LocalDate startOfWeek = LocalDate.now().minusDays(dayOfWeek);
LocalDate endOfWeek = LocalDate.now().plusDays(DayOfWeek.SUNDAY.getValue() - dayOfWeek - 1);
}
}
輸出
Start of Week : 2015-07-20
End of Week : 2015-07-26
我想身份整星期日期(從星期天到星期六)使用java中的當前日期。
這應該解決您的問題,您可以根據您的情況進一步修改。
Calendar c = Calendar.getInstance();
c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
System.out.println("Date " + c.getTime());
c.add(Calendar.DATE, +1);
System.out.println(c.getTime());
希望它可以幫助
我認爲你需要一個'c.setFirstDayOfWeek(Calendar.SUNDAY)',否則'c.set(Calendar.DAY_OF_WEEK,Calendar.SUNDAY)'會在週日不是一週中的第一天。 – msandiford
是的,你是對的,在這種情況下,如果情況需要,我們需要設置第一天。但是,正如用戶已經明確提到關於'Sunday'到'CurrentDayOfWeek'。我做到了。 – mustangDC
所以有一天添加到您開始星期生效之日起到您想 –
一天看一看'Calendar','setWeekDate()','getFirstDayOfWeek()'。 –