`
Bo6Bear
  • 浏览: 3810 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
最近访客 更多访客>>
社区版块
存档分类
最新评论

2012-12-31的week_of_year值为什么是1,而不是53

    博客分类:
  • java
 
阅读更多

问题描述

对Calendar的这个WEEK_OF_YEAR的历法做个总结。

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
Calendar cl = Calendar.getInstance(); 
cl.setTime(sdf.parse("2012-12-31")); 
int week = cl.get(Calendar.WEEK_OF_YEAR); 
System.out.println(week); 

 结果是1.而我们期望的可能是53周

问题分析

这个week_of_year和两个值有关。 

  • firstDayOfWeek: 用周几作为一周的第一天,我们默认的是SUNDAY,德国的是周三(这个和本地化有关) 
  • minimalDaysInFirstWeek: 一年的第一周用几号开始算。 
Java代码  收藏代码
  1. System.out.println(cl.getFirstDayOfWeek()); //SUNDAY  
  2. System.out.println(cl.getMinimalDaysInFirstWeek());//1  

打印出来的结果是从周日开始做为1周的开始,新年的第一天从1号开始。 

2012年最后几天的日历如下: 

周日  1      2   3   4   5   6   

30号  31  1   2   3   4   5 

新年的第一天是1号(minimalDaysInFirstWeek)在周二,一周必须由7天组成,又是从周日(firstDayOfWeek)开始算起,所以30,31都属于第1周就等到了上面的结果。 


要跟这个原理可以分别修改这两个属性可以提到不同的结果。 
方法1: 

Java代码  收藏代码
  1. cl.setFirstDayOfWeek(Calendar.TUESDAY);  

修改每周从周二开始,而周2正好是1号,所以12-31的week值为53 
方法2: 
Java代码  收藏代码
  1. cl.setMinimalDaysInFirstWeek(6);  

修改新年从6号开始算起,6号正好是周日,一周的开始,所以6号前的7天的week值都是53.
1
5
分享到:
评论

相关推荐

    Python本科毕业设计基于机器学习的重庆轨道交通客流量时空分析预测.zip

    对于站点:将每个站点抽象为一个图,利用弗洛伊德算法解决多源最短路径路径,求出乘客从站点A 进入,在站点D离开中途经过的所有站点,为途径的每个站点的人流量数加1,这样可以获取每个站点的日均人流量。...

    毕业设计基于机器学习python实现的重庆轨道交通客流量时空分析预测项目源码.zip

    毕业设计基于机器学习python实现的重庆轨道交通客流量时空分析预测项目源码.zip 本科毕业设计,基于机器学习的重庆轨道交通客流量时空分析预测,客流量统计计算,对于站点:将每个站点抽象为一个图,利用弗洛伊德...

    酒店预订数据集 CSV 11W+记录

    每个观察结果代表 2015 年 7 月 1 日至 2017 年 8 月 31 日期间的酒店预订,包括有效到达的预订和取消的预订。 包含字段: hotel 酒店类型 - 度假酒店或城市酒店。 is_canceled 取消预订的二进制指标(1 表示取消,0...

    java时间格式大全(算法源码)

    java时间格式大全(算法源码) java,date,时间,时间格式,算法源码 * * @return */ public static String getTimeShort() { SimpleDateFormat formatter = new ... if (cal1.get(Calendar.WEEK_OF_YEAR) == ...

    hdongix c++

    来算相差9天,1998-6-12和1999-6-23按年算相差1年,1999-12-1和1999-3-12按月算相差9个月 用法:datediff(darepart,date1,date2) 参数说明:datepart(同上) date1、date2(同上date) 例子: select datediff...

    java时间处理工具类--DateUtils

    cal.add(Calendar.DAY_OF_MONTH, -1); return cal.getTime(); } /** * 获取旬的第一天 * * @param offset * 偏移量 * @return Date */ public Date getFirstDayOfTendays(int offset) { cal....

    java常用工具类的使用

    Q 老师,时间毫秒值从1970年1月1日0:00.000开始计算,上面示例中10年后应该是1980年1月1日0:00.000,为什么输出结果是:1980年1月1日 8:00呢? A java.util.Date类型表示的是GMT时间,本身输出是国际化输出,...

    精美的js日期控件,可以多个参数设定。

    * classes - An array of 12 CSS classes that are applied to the calendar construct: calendar, prev, next, month, year, today, invalid, valid, inactive, active, hover, hilite. It is not necessary (as ...

    ZendFramework中文文档

    8.1.1. 为什么使用 Zend_Currency ? 8.2. 如何使用货币 8.2.1. 从货币创建输出 8.2.2. 修改货币格式 8.2.3. Zend_Currency 的信息方法 8.2.4. 设置新缺省值 8.2.5. 加速 Zend_Currency 8.3. 从前面的版本迁移...

    hive函数大全(中文版)

    12. 日期转周函数: weekofyear 20 13. 日期比较函数: datediff 21 14. 日期增加函数: date_add 21 15. 日期减少函数: date_sub 21 六、条件函数 21 1. If函数: if 21 2. 非空查找函数: COALESCE 22 3. 条件判断函数...

    Java 2实用教程(第三版)实验指导与习题解答

    实验1 方程求根 31 实验2 字体对话框 34 实验3 英语单词拼写训练 37 上机实践8 多线程 41 实验1 汉字打字练习 41 实验2 旋转的行星 43 实验3 双线程接力 47 上机实践9 输入输出流 50 实验1 学读汉字 50 实验2 统计...

    VBS脚本技术手册(vbs对象)

    05:函数weekday( day,[first day of week])默认vbsunday =============对象部分==================== 一、FileSystemObject 对象-对应的方法 综述:Dim fso, MyFile Set fso = CreateObject("Scripting....

    C语言函数及相关知识

    if (stat == -1) printf("Allocated memory at segment: %x\n", segp); else printf("Failed: maximum number of paragraphs available is %u\n", stat); return 0; } 函数名: arc 功 能: 画一弧线 用 ...

Global site tag (gtag.js) - Google Analytics