`
Bo6Bear
  • 浏览: 3910 次
  • 性别: 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
分享到:
评论

相关推荐

    weekOfYear.rar_week of year_周数

    这个压缩包可能包含一个名为"weekOfYear.exe"的可执行文件,这通常是一个Windows应用程序,用于执行所述功能。 在编程和数据分析中,"week of year"是一个常见的概念,用于确定一年中任何日期所在的那一周。不同的...

    mysql 关于详细时间应用

    - **WEEKOFYEAR()**: 同样返回一年中的第几周,但其计算方式略有不同。 - **DAYOFWEEK()**: 返回一周中的第几天。 - **WEEKDAY()**: 返回一周中的第几天,但与`DAYOFWEEK()`不同的是,一周的第一天被定义为星期一...

    计算年积日GPS周(C++)

    而年积日则是用于追踪一年中的日期,它将每年的每一天作为一个累加值。在C++编程中,我们需要理解日期处理、闰年规则以及如何与GPS时间系统进行转换。 首先,让我们深入理解年积日。年积日是从每年的1月1日开始计算...

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

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

    万年历算法

    - `start_day_of_week`: 当前月份第一天对应的星期值(0代表星期日,1代表星期一,以此类推)。 #### 函数实现逻辑分析 1. **初始化**: 函数开始时先将 `start_day_of_week` 初始化为2,`temp_total_day` 初始化为...

    java技术点,常用的方法处理

    这里,`set(Calendar.DAY_OF_WEEK, ...)`将日期设置为本周的第一天,而`set(Calendar.WEEK_OF_YEAR, ...)`确保我们处在一年中的第一周。然后,`getTime()`返回的是一个`Date`对象,代表了这一周的开始日期。 此外,...

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

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

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

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

    oracle 日期函数

    - **Week of Year (年内周数):** - `WW`: 用数字表示的年内周数(例如:`44`)。 - **Day of Year (年内第几天):** - `W`: 用数字表示的年内第几天(例如:`124`)。 #### 2. **示例** - **将当前日期转换为...

    javaScript日期工具类DateUtils详解

    如果`time1`比`time2`早,返回-1;如果两者相等,返回0。 ### 判断闰年(isLeapYear) DateUtils提供了一个`isLeapYear`函数来判断一个给定的年份是否是闰年。如果年份能被4整除且不能被100整除,或者能被400整除,...

    万年历算法——阳历阴历24节气

    - 再遍历从1月到目标月份的所有月份,根据每个月的天数调整`start_day_of_week`的值。 - 对于一月、三月、五月、七月、八月、十月、十二月,每个月加3天。 - 二月根据是否为闰年来判断,闰年加29天,非闰年加28天...

    hive 函数大全

    12. **日期转周函数(weekofyear)** - 示例: `SELECT weekofyear('2017-07-01') AS result;` 13. **日期比较函数(datediff)** - 示例: `SELECT datediff('2017-07-01', '2017-07-02') AS result;` 14. **日期增加...

    java时间操作函数汇总.pdf

    cal.set(Calendar.WEEK_OF_YEAR, 1); cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); Date date = cal.getTime(); ``` 5. `add()` 和 `roll()` 方法: - `add()` 方法用于在指定的时间字段上增加或减少值。...

    hive函数大全

    - 日期转周函数 (weekofyear) - 日期比较函数 (datediff) - 日期增加函数 (date_add) - 日期减少函数 (date_sub) 六、条件函数 条件函数提供条件表达式的执行,根据条件返回不同的结果。 - If函数 (if) - 非空查找...

    mysqlAPI--日期和时间函数.docx

    54. WEEKOFYEAR():返回日期的日历周(0-53) 55. YEAR():返回一年 56. YEARWEEK():返回日期的年和周 这些日期和时间函数可以满足各种日期和时间的需求,帮助开发者更方便地操作日期和时间值。

    DB2函数详解

    - 示例:`SELECT DAYOFYEAR(date_column) AS day_of_year;` 19. **DAYS**: 返回两个日期之间的天数差。 - 示例:`SELECT DAYS(end_date, start_date) AS days_between;` 20. **DBCLOB**: 返回DBCLOB类型的值。 ...

    Mysql常用函数列表

    - 功能:根据`X`的符号返回-1、0或1。 - 示例:`SIGN(-5)`将返回-1。 11. **SQRT(X)** - 功能:返回`X`的平方根。 - 示例:`SQRT(4)`将返回2。 #### 日期与时间函数 1. **ADDTIME(expr1, expr2)** - 功能:...

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

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

    2021-2022年收藏的精品资料软件工程师Java开发中Date的各种相关用法教程.docx

    例如,如果当前日期是月份的最后一天,再roll(-1)天,会变为该月的最后一天,而不会进入下一个月。 这些基本操作在实际开发中非常常见,尤其是在处理日期相关的业务逻辑时,如用户注册时间的记录、活动的开始和结束...

Global site tag (gtag.js) - Google Analytics