我想使用java中的当前日期识别整个星期日期(从星期日到星期六)。
例如:今天是星期二 - 这意味着我需要星期二,星期一和星期日的日期。
如果当天是星期三 - 那么我需要从星期日到星期三的日期。
如何在java中实现这个逻辑?
我能够从当前日期开始一周的开始,但我不知道如何从周开始日期获得剩余的日期。有没有可用的java实用程序?
答案 0 :(得分:7)
作为参考,用于制定产出的当前日期是2015年7月22日星期三(2015年7月22日)
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
答案 1 :(得分:0)
使用Java 8非常简单。但请注意,iso-8601标准代表Monday
作为一周的第一天...... See the JavaDocs ...所以为了实现您的要求只需找到Monday
作为基本情况......
DayOfWeek是一个代表一周7天的枚举 - 周一,周二,周三,周四,周五,周六和周日。
除文本枚举名称外,每个星期几都有一个int值。 int值遵循ISO-8601标准,从1(星期一)到7(星期日)。建议应用程序使用enum而不是int值来确保代码清晰。
/**
* @author Edward Beckett :: <Edward@EdwardBeckett.com>
* @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
答案 2 :(得分:0)
我想使用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());
希望有所帮助