首页 文章

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

提问于
浏览
0

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

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

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

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

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

3 回答

  • 0

    作为参考,用于制定产出的当前日期是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
    

    As an alternative

    (这基本上适用于所有其他提到的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
    
  • 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());
    

    希望能帮助到你

  • 7

    使用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
    

相关问题