获取一周的第一个日期

时间:2012-04-12 08:09:50

标签: java java-me

我想使用Calendar和Date获取java中一周的第一个日期,输入为:: 1.本月的周数 2个月 3.年

    Calendar cal = Calendar.getInstance();
    int weekOfMonth = Calendar.WEEK_OF_MONTH;
    System.out.println("weekOfMonth : " + weekOfMonth);

在此之后我不知道继续。

3 个答案:

答案 0 :(得分:2)

Calendar类中有一个方法getFirstDayOfWeek(),它将返回0表示星期日,1表示星期一等等。以下代码片段基于此,它将为您提供一周中的第一个日期。 / p>

private static Date getFirstDateOfWeek(){
        Calendar cal = Calendar.getInstance(); 
        Date d = Calendar.getInstance().getTime();
        int currDay  =  d.getDay(); // getting the current day
        int startDay =  (currDay - cal.getFirstDayOfWeek()) + 1; // calculate the difference of number days to the current date from the first day of week
        d.setDate(d.getDate() - startDay); // setting the date accordingly.
        return d;
    }

希望这会对你有所帮助。

答案 1 :(得分:0)

int year = 2012;
int month = 3 //for April(they start from 0 = January)
int week = 2;
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, month);
calendar.set(Calendar.YEEK_OF_MONTH, week);

Date date = calendar.getTime();

答案 2 :(得分:0)

使用java.time

首先,您可以使用YearMonth类来表示年份和月份。

YearMonth ym = YearMonth.of( 2017 , Month.FEBRUARY );

至于每周,您必须定义条款。你的意思是包含本月第一天的一周吗?或者你是指那个月的所有七天的第一周?或者你的意思是第一周与某一天的某一天?

如果您想要本月的第一天,请询问YearMonth

LocalDate firstOfMonth = ym.atDay( 1 );

要获取包含第一个月日期的一周的开头,请使用TemporalAdjuster(注释复数名称)类中的TemporalAdjusters

LocalDate previousOrSameMondayOfFirstOfMonth = 
    firstOfMonth.with( TemporalAdjusters.previousOrSame( DayOfWeek.MONDAY ) ) ;

如果您指的是包含特定星期几第一次出现的一周,请使用另一个TemporalAdjuster

LocalDate firstMondayOfMonth = 
  firstOfMonth.with( TemporalAdjusters.firstInMonth( 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类?

ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如IntervalYearWeekYearQuartermore