在我的Android应用程序中,我正在努力获取提供日期的周数.但它没有给我正确的周数我正在使用以下代码来获取周数.
String format = "dd-MM-yyyy";
SimpleDateFormat df = new SimpleDateFormat(format);
Date date = df.parse(date);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int week = cal.get(Calendar.WEEK_OF_YEAR);
Run Code Online (Sandbox Code Playgroud)
从上面的日历看,截至2016年1月,属于第1周的天数仅为第1天,第2天和第3天.对于第2周,相关日期分别为4日,5日,6日,7日,8日,9日和10日.然后在第3周,相关日期分别为11日,12日,13日,14日,15日,16日和17日,依此类推.但对于2016年1月12日的日期代码,我给出了第2周而不是第3周.我做错了什么,或者这是函数正常工作的方式.如上所述,我怎样才能达到我的目标来获得周数.
1月1日,2日和3日实际上是2015年的第53周.代码工作正常,您对周编号的假设是错误的.GregorianCalendar的默认行为与维基百科第一周的ISO定义相同:
第01周的ISO 8601定义是其中第一个星期四的一周.基于本周属性的以下定义是相互等效的,因为ISO周从星期一开始:
- 这是1月份的大部分时间(4次或更多次)的第一周.
- 第一天是最接近1月1日的星期一.
- 它有1月4日.因此,最早可能的日期是12月29日至1月4日,即1月4日至10日.
- 如果星期六,星期日和1月1日不是工作日,它有一年的第一个工作日.
如果1月1日是星期一,星期二,星期三或星期四,则是01周.如果1月1日是星期五,则是上一年的第53周的一部分; 如果在星期六,它是第52周的一部分(如果前一年是闰年,则为53); 如果在星期天,它是上一年第52周的一部分.
| 归档时间: |
|
| 查看次数: |
900 次 |
| 最近记录: |