java获得当前日期是今年的第几周,以及这周的开始日期的方法

直接上代码,备份使用        
时间戳,长整型存储
            long startTime1 = 1530613938532l;
            Calendar calendar = Calendar.getInstance();
            calendar.setFirstDayOfWeek(Calendar.MONDAY);//设置星期一为一周开始的第一天
            calendar.setMinimalDaysInFirstWeek(4);//可以不用设置
            calendar.setTimeInMillis(System.currentTimeMillis());//获得当前的时间戳
            int weekYear = calendar.get(Calendar.YEAR);//获得当前的年
            int weekOfYear = calendar.get(Calendar.WEEK_OF_YEAR);//获得当前日期属于今年的第几周
            
            System.out.println("第几周:"+weekOfYear);
            calendar.setWeekDate(weekYear, weekOfYear, 2);//获得指定年的第几周的开始日期
            long starttime = calendar.getTime().getTime();//创建日期的时间该周的第一天,
            calendar.setWeekDate(weekYear, weekOfYear, 1);//获得指定年的第几周的结束日期
            long endtime = calendar.getTime().getTime();
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
            String dateStart = simpleDateFormat.format(starttime);//将时间戳格式化为指定格式
            String dateEnd = simpleDateFormat.format(endtime);
            System.out.println(dateStart);
            System.out.println(dateEnd);
 
 
这个获取第几周的方法在跨年周上会出现问题
上面这种方式用来获取指定日期的周开始日期和结束日期是可以的,用来判断当前日期属于第几周则不行
参考资料:一年有几周 https://zhidao.baidu.com/question/490464213.html
 
在中华人民共和国,包含1月4日的那个星期为当年的第一个星期
链接:https://www.zhihu.com/question/33649214/answer/129104583
依据:
根据中华人民共和国国家标准GB/T 7408-2005《数据元和交换格式信息交换日期和时间表示法》中4.3.3.2部分:
即一年中的第一个 日历星期包括该年的第一个星期四,并且日历年的最后一个日历星期就是在下一个日历年的第一个日历星期之前的那个星期,日历星期数是其在该年中的顺序。
以及其注释:
注 4:确定第1个日历星期的规则与规则“第一个 日历星期包含1月4日的星期”是等同的。
posted @ 2018-07-17 19:24  海绵般汲取  阅读(19500)  评论(4编辑  收藏  举报