美文网首页
java日期周相关

java日期周相关

作者: forstar | 来源:发表于2017-12-06 10:03 被阅读0次

    前段时间,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;

    }

    相关文章

      网友评论

          本文标题:java日期周相关

          本文链接:https://www.haomeiwen.com/subject/hqkkixtx.html