如何识别java中当前日期的一周

时间:2015-07-22 04:37:18

标签: java date

我想使用java中的当前日期识别整个星期日期(从星期日到星期六)。

例如:今天是星期二 - 这意味着我需要星期二,星期一和星期日的日期。

如果当天是星期三 - 那么我需要从星期日到星期三的日期。

如何在java中实现这个逻辑?

我能够从当前日期开始一周的开始,但我不知道如何从周开始日期获得剩余的日期。有没有可用的java实用程序?

3 个答案:

答案 0 :(得分:7)

作为参考,用于制定产出的当前日期是2015年7月22日星期三(2015年7月22日)

Java 8

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

JodaTime

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包含时间信息,因此使用beforeafterequals可能并不总是按您认为的那样做...

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());

希望有所帮助