计算一年有多少个周,每个周的开始日期和结束日期是什么
/** * 返回指定年度的所有周。List中包含的是String[2]对象<br> * string[0]本周的开始日期,string[1]是本周的结束日期。<br> * 日期的格式为yyyy-MM-dd。<br> * 每年的第一个周,必须包含星期一且是完整的七天。<br> * 例如:2009年的第一个周开始日期为2009-01-05,结束日期为2009-01-11。 <br> * 星期一在哪一年,那么包含这个星期的周就是哪一年的周。<br> * 例如:2008-12-29是星期一,2009-01-04是星期日,哪么这个周就是2008年度的最后一个周。<br> * * @param year 格式 yyyy ,必须大于1900年度 小于9999年 * @return */ public static List<String[]> getWeeksByYear(final int year){ if(year<1900 || year >9999){ throw new NullPointerException("年度必须大于等于1900年小于等于9999年"); } //实现思路,首先计算当年有多少个周,然后找到每个周的开始日期和结束日期 // Calendar calendar = new GregorianCalendar();// // 在具有默认语言环境的默认时区内使用当前时间构造一个默认的 GregorianCalendar。// calendar.setFirstDayOfWeek(Calendar.MONDAY); //设置每周的第一天为星期一// calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); //每周从周一开始 // 上面两句代码配合,才能实现,每年度的第一个周,是包含第一个星期一的那个周。 // calendar.setMinimalDaysInFirstWeek(7); //设置每周最少为7天// calendar.set(Calendar.YEAR, year); // 设置年度为指定的年// //首先计算当年有多少个周,每年都至少有52个周,个别年度有53个周 int weeks = getWeekNumByYear(year);// System.out.println(year+"共有"+weeks+"个周"); List<String[]> result = new ArrayList<String[]>(weeks); for(int i=1;i<=weeks;i++){ String[] tempWeek = new String[2]; tempWeek[0] = getYearWeekFirstDay(year,i); tempWeek[1] = getYearWeekEndDay (year,i);//或者使用下面的代码,不过发现效率更低 // tempWeek[0] = getDateAdd(firstWeekDay,(i-1)*7+0);// tempWeek[1] = getDateAdd(firstWeekDay,(i-1)*7+6); result.add(tempWeek);// System.out.println(i+"="+tempWeek[0]+"_"+tempWeek[1]); } return result; } /** * 计算指定年度共有多少个周。 * @param year 格式 yyyy ,必须大于1900年度 小于9999年 * @return */ public static int getWeekNumByYear(final int year){ if(year<1900 || year >9999){ throw new NullPointerException("年度必须大于等于1900年小于等于9999年"); } int result = 52;//每年至少有52个周 ,最多有53个周。 String date = getYearWeekFirstDay(year,53); if(date.substring(0, 4).equals(year+"")){ //判断年度是否相符,如果相符说明有53个周。 result = 53; } return result; } /** * 计算某年某周的开始日期 * @param yearNum 格式 yyyy ,必须大于1900年度 小于9999年 * @param weekNum 1到52或者53 * @return 日期,格式为yyyy-MM-dd */ public static String getYearWeekFirstDay(int yearNum,int weekNum) { if(yearNum<1900 || yearNum >9999){ throw new NullPointerException("年度必须大于等于1900年小于等于9999年"); } Calendar cal = Calendar.getInstance(); cal.setFirstDayOfWeek(Calendar.MONDAY); //设置每周的第一天为星期一 cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);//每周从周一开始// 上面两句代码配合,才能实现,每年度的第一个周,是包含第一个星期一的那个周。 cal.setMinimalDaysInFirstWeek(7); //设置每周最少为7天 cal.set(Calendar.YEAR, yearNum); cal.set(Calendar.WEEK_OF_YEAR, weekNum); //分别取得当前日期的年、月、日 return getFormatDate(cal.getTime()); } /** * 计算某年某周的结束日期 * @param yearNum 格式 yyyy ,必须大于1900年度 小于9999年 * @param weekNum 1到52或者53 * @return 日期,格式为yyyy-MM-dd */ public static String getYearWeekEndDay(int yearNum,int weekNum) { if(yearNum<1900 || yearNum >9999){ throw new NullPointerException("年度必须大于等于1900年小于等于9999年"); } Calendar cal = Calendar.getInstance(); cal.setFirstDayOfWeek(Calendar.MONDAY); //设置每周的第一天为星期一 cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);//每周从周一开始// 上面两句代码配合,才能实现,每年度的第一个周,是包含第一个星期一的那个周。 cal.setMinimalDaysInFirstWeek(7); //设置每周最少为7天 cal.set(Calendar.YEAR, yearNum); cal.set(Calendar.WEEK_OF_YEAR, weekNum); return getFormatDate(cal.getTime()); }
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow
计算一年有多少个周,每个周的开始日期和结束日期是什么相关推荐
- 计算一年有多少个周 每个周的开始日期和结束日期是什么
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! /** ...
- php 计算指定年份的周总数与及第几周的开始日期和结束日期(从周一开始)
/** * 获取某年第几周的开始日期和结束日期 * @param int $year * @param int $week 第几周; */ public function weekday($year, ...
- 转:[C#]获取某年指定周的开始日期和结束日期的通用方法
来自:http://blog.csdn.net/vrhero/archive/2008/01/13/2042481.aspx /// <summary> /// 获取一年中指定的一周的开始 ...
- 获取某个周在本年的开始日期和结束日期
传入 年份 和 本年的多少周,计算改周在本年的开始日期和结束日期 /** @Purpose : 根据所给年份和该年的第几周,得出该周在本年的开始日期和结束日期* @time : 2017/11/03 ...
- c#日期转换周几_C#获取每个年,月,周的起始日期和结束日期的方法
这篇文章主要介绍了C#获取每个年,月,周的起始日期和结束日期的方法,涉及C#时间与日期基本操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了C#获取每个年,月,周的起始日期和结束日期 ...
- 返回指定月份的周列表 包含 周序号、开始日期、结束日期(不包含周末)
/*** 返回当前年月的周列表 包含 周序号.开始日期.结束日期(不包含周末)* @param year 年* @param month 月* @returns {Array} */function ...
- oracle 获取每周五,Oracle获取周几以及每周对应得开始日期和结束日期
Oracle获取周几以及每周对应得开始日期和结束日期 --获取近一年周的开始日期和结束日期,从星期日开始 select '2014'||sunday.the_week,decode(sign(sund ...
- oracle根据日期显示星期几,Oracle获取周几以及每周对应得开始日期和结束日期
Oracle获取周几以及每周对应得开始日期和结束日期 --获取近一年周的开始日期和结束日期,从星期日开始 select '2014'||sunday.the_week,decode(sign(sund ...
- js计算用开始日期和结束日期计算天数
function taxMonese(formula_value){ var num = new Number(); var dateDiffs; var start_date="2017 ...
最新文章
- Spring-boot logback日志处理
- Intel Realsense D435 USB线长、光纤线长测试(使用普通USB3.0数据线最长不能超过4M,使用普通USB3.0数据线+USB3.0光纤数据线,不能超过1+5=6M)
- python旋转矩阵_python – 来自两个3D点的Euler角度和旋转矩阵
- 【英语学习】【Level 07】U02 Live Work L5 This is where we work
- js rsa解密中文乱码_python解析JS爬取漫画网站--动态爬虫
- PCL之积分图法线估计
- android camera预览帧,android camera2处理每一帧并显示其预览
- 适合于图像处理方向的SCI期刊杂志列表【转】
- 不格式化U盘的情况下部署WinPE
- Apache Shiro框架
- oki5530sc打印错误_OKI5530sc调整方法
- 永中云编辑(java版)
- 想搬去苏州生活了。。
- EBS R12.2 ADOP (R12.2 AD Online Patching) - 3
- 阿里巴巴2018秋招总结
- 13种权重的计算方法
- 假设检验中两类错误及最小样本量计算
- 《2019全球货运代理TOP25、全球第三方物流Top50排行榜》
- 标准差越大越集中_中国大学MOOC: 正态分布的标准差越大,其概率密度曲线越高越集中。...
- html、js实现分页展示的功能
热门文章
- Android APP必备高级功能,消息推送之MQTT
- 【编译器】Dev C++ 执行程序 显示“Fail to excute **/**/ .exe, Error: 0 操作成功完成。{未解决}
- 健身泡沫轴可以带上高铁吗_15大最佳泡沫轴肌肉放松训练,90%的健身者都不会!...
- 达林顿驱动器ULN2003,ULN2803使用注意要点
- ROS2极简总结-Nav2-地图和自适应蒙特卡洛定位
- 卫龙上市首日破发:高瓴、红杉、腾讯等账面亏损,刘卫平为董事长
- Ansible playbook Vault 加密
- vue过渡动画之——过渡类名
- STM32F1的I/O最大能承受多大电压
- halcon-通过视觉提取血管造影中血管并测量直径