(Android)获取一周的第一天

时间:2014-08-02 05:12:21

标签: android date calendar

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

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

谢谢。

4 个答案:

答案 0 :(得分: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());

我希望这会对你有所帮助

答案 1 :(得分:1)

试试这个:

//获取今天和明确的时间

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?

希望这可以帮到你!

答案 2 :(得分: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());

我希望这会对你有所帮助

答案 3 :(得分:0)

TL;博士

现代方法使用java.time类而不是麻烦的旧Calendar& Date课程。

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

LocalDate

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

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

TemporalAdjuster

要获得一周的第一天,(a)决定一周的第一天是什么时候,(b)使用TemporalAdjuster中定义的TemporalAdjusters实施方式来确定特定的DayOfWeek枚举对象。

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

关于java.time

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

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

要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310

从哪里获取java.time类?