【问题标题】:(Android) Get first day of week(Android) 获取一周的第一天
【发布时间】:2025-11-28 05:40:01
【问题描述】:

当我们知道一周中的某个日期时,如何获得一周的第一天?

我知道当前月份、当前年份和当前星期几。 那么,有没有办法知道本周的第一天。

谢谢。

【问题讨论】:

  • 你在谷歌搜索过..??你试过什么。?

标签: android date calendar


【解决方案1】:

您好,如果您需要获取当前一周的第一天“星期一”

Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH,  Calendar.MONDAY-calendar.get(Calendar.DAY_OF_WEEK));
  Log.w(TAG, "first day of week" + calendar.getTime());

2 如果您需要 20-12-2016 一周的第一天

Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.DAY_OF_MONTH, 20);
        calendar.set(Calendar.MONTH,Calendar.DECEMBER);
        calendar.set(Calendar.YEAR,2016);
        calendar.add(Calendar.DAY_OF_MONTH,Calendar.MONDAY - calendar.get(Calendar.DAY_OF_WEEK));
    Log.w(TAG,"first day of week:"+calendar.getTime());

希望对你有帮助

【讨论】:

    【解决方案2】:

    试试这个:

    // 获取今天并清除一天中的时间

    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.HOUR_OF_DAY, 0); // ! clear would not reset the hour of day !
    cal.clear(Calendar.MINUTE);
    cal.clear(Calendar.SECOND);
    cal.clear(Calendar.MILLISECOND);
    

    // 以毫秒为单位获取本周开始

    cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
    System.out.println("Start of this week:       " + cal.getTime());
    System.out.println("... in milliseconds:      " + cal.getTimeInMillis());
    

    参考:How to get the first day of the current week and month?

    希望对您有所帮助!

    【讨论】:

      【解决方案3】:

      您好,如果您需要获取当前一周的第一天“星期一”

      Calendar calendar = Calendar.getInstance();
      calendar.add(Calendar.DAY_OF_MONTH,  Calendar.MONDAY-calendar.get(Calendar.DAY_OF_WEEK));
      Log.w(TAG, "first day of week" + calendar.getTime());
      

      2 如果您需要 20-12-2016 一周的第一天

      Calendar calendar = Calendar.getInstance();
      calendar.set(Calendar.DAY_OF_MONTH, 20);
      calendar.set(Calendar.MONTH,Calendar.DECEMBER);
      calendar.set(Calendar.YEAR,2016);
      calendar.add(Calendar.DAY_OF_MONTH,Calendar.MONDAY - calendar.get(Calendar.DAY_OF_WEEK));
      Log.w(TAG,"first day of week:"+calendar.getTime());
      

      希望对你有帮助

      【讨论】:

        【解决方案4】:

        tl;博士

        现代方法使用 java.time 类,而不是麻烦的旧 CalendarDate 类。

        LocalDate.of( 2017 , Month.MARCH , 23 )
                 .with( TemporalAdjusters.previousOrSame( DayOfWeek.MONDAY ) )
        

        LocalDate

        LocalDate 类表示没有时间和时区的仅日期值。

        LocalDate someDate = LocalDate.of( 2017 , Month.MARCH , 23 ) ;
        

        TemporalAdjuster

        要获得一周的第一天,(a) 决定一周的第一天是哪一天,(b) 使用在 TemporalAdjusters 中定义的 TemporalAdjuster 实现来获取特定 @987654351 的日期@枚举对象。

        LocalDate ld = someDate.with( TemporalAdjusters.previousOrSame( DayOfWeek.MONDAY ) ) ;
        

        关于java.time

        java.time 框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧 legacy 日期时间类,例如 java.util.DateCalendarSimpleDateFormat

        Joda-Time 项目现在位于maintenance mode,建议迁移到java.time 类。

        要了解更多信息,请参阅Oracle Tutorial。并在 Stack Overflow 上搜索许多示例和解释。规格为JSR 310

        从哪里获得 java.time 类?

        【讨论】:

          最近更新 更多