java日期周相关

前段时间,17年11月份,化工项目中,客户提出要有按周统计的报表。所以搜了下日期中周相关的资料整合下。

有两个属性非常重要。

1是默认每年的1号所在的那一周,是当年的第一周。此属性当周跨年时会用到。

2是默认周日是每周的第一天。

这俩个属性根据需要设置好后,周相关的取值与计算就非常简单了。

/*

周跨年时,项目中用的是周末在哪年,本周就算到哪年。如果按照周一在哪年,本周就算到哪年。可以设置以下两个属性:

设置每年7号所在的周为第一周(如果不设置此项,默认是1号,则等同于跨年时,周末在哪年,本周就算到哪年)

cl.setMinimalDaysInFirstWeek(7);

设置每周的第一天为星期一

cl.setFirstDayOfWeek(Calendar.MONDAY);

*/

/**

* 2017.11.16  yk

* 传入日期,返回日期所属的周数

* 规则:按中国习惯,周一到周日为一周。 跨年时,按照周末那天所在的年份,算到那年

* @paramdateStryyyy-MM-dd

* @return  yyyy-WW

*/

public static String getWeekByDate(String dateStr){

SimpleDateFormat sdf =newSimpleDateFormat("yyyy-MM-dd");

Calendar cl = Calendar.getInstance();

try{

cl.setTime(sdf.parse(dateStr));

}catch(Exception e){

e.printStackTrace();

}

//设置每周的第一天为星期一

cl.setFirstDayOfWeek(Calendar.MONDAY);

intweek = cl.get(Calendar.WEEK_OF_YEAR);

cl.add(Calendar.DAY_OF_MONTH,-7);

intyear = cl.get(Calendar.YEAR);

if(week

year+=1;

}

//    System.out.println("根据日期获取所属的周数:"+dateStr+":"+year+"年第"+week+"周");

return year+"-"+week;

}

/**

* 2017.11.16  yk

* 根据年份和周数,获取起止日期

* 规则:按中国习惯,周一到周日为一周。 跨年时,按照周末那天所在的年份,算到那年

* @paramyear

* @paramweek

* @return

*/

public static String getDateOfWeek(intyear,intweek) {

SimpleDateFormat format =newSimpleDateFormat("yyyy-MM-dd");

Calendar cl = Calendar.getInstance();

//设置年

cl.set(Calendar.YEAR,year);

//设置每周的第一天为星期一

cl.setFirstDayOfWeek(Calendar.MONDAY);

//设置周数

cl.set(Calendar.WEEK_OF_YEAR,week);

//    得到该周 周一的日期:

cl.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);

String beginDate = format.format(cl.getTime());

//    得到该周 周日的日期:

cl.set(Calendar.DAY_OF_WEEK,Calendar.SUNDAY);

String endDate = format.format(cl.getTime());

//    System.out.println("根据年份和周数,获取起止日期-------"+year+"年第"+week+"周的起止日期为:"+beginDate+" TO "+endDate);

returnbeginDate+"TO"+endDate;

}

/**

* 2017.11.16  yk

* 根据年份,获取总周数

* 规则:按中国习惯,周一到周日为一周。 跨年时,按照周末那天所在的年份,算到那年

* @paramyear

* @return

*/

public static int getWeeksOfYear(intyear){

Calendar cl = Calendar.getInstance();

//设置每周的第一天为星期一

cl.setFirstDayOfWeek(Calendar.MONDAY);

//设置月日为12月25日

cl.set(year,Calendar.DECEMBER,25);

intweek = cl.get(Calendar.WEEK_OF_YEAR);

//    System.out.println("根据年份查询总周数-----------------:"+year+"年共有"+week+"周");

return week;

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容