问题描述
对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: 一年的第一周用几号开始算。
- System.out.println(cl.getFirstDayOfWeek());
- System.out.println(cl.getMinimalDaysInFirstWeek());
打印出来的结果是从周日开始做为1周的开始,新年的第一天从1号开始。 2012年最后几天的日历如下: 周日 1 2 3 4 5 6 30号 31 1 2 3 4 5 新年的第一天是1号(minimalDaysInFirstWeek)在周二,一周必须由7天组成,又是从周日(firstDayOfWeek)开始算起,所以30,31都属于第1周就等到了上面的结果。
要跟这个原理可以分别修改这两个属性可以提到不同的结果。
方法1:
- cl.setFirstDayOfWeek(Calendar.TUESDAY);
修改每周从周二开始,而周2正好是1号,所以12-31的week值为53 方法2:
- cl.setMinimalDaysInFirstWeek(6);
修改新年从6号开始算起,6号正好是周日,一周的开始,所以6号前的7天的week值都是53.
分享到:
相关推荐
这个压缩包可能包含一个名为"weekOfYear.exe"的可执行文件,这通常是一个Windows应用程序,用于执行所述功能。 在编程和数据分析中,"week of year"是一个常见的概念,用于确定一年中任何日期所在的那一周。不同的...
- **WEEKOFYEAR()**: 同样返回一年中的第几周,但其计算方式略有不同。 - **DAYOFWEEK()**: 返回一周中的第几天。 - **WEEKDAY()**: 返回一周中的第几天,但与`DAYOFWEEK()`不同的是,一周的第一天被定义为星期一...
而年积日则是用于追踪一年中的日期,它将每年的每一天作为一个累加值。在C++编程中,我们需要理解日期处理、闰年规则以及如何与GPS时间系统进行转换。 首先,让我们深入理解年积日。年积日是从每年的1月1日开始计算...
对于站点:将每个站点抽象为一个图,利用弗洛伊德算法解决多源最短路径路径,求出乘客从站点A 进入,在站点D离开中途经过的所有站点,为途径的每个站点的人流量数加1,这样可以获取每个站点的日均人流量。...
- `start_day_of_week`: 当前月份第一天对应的星期值(0代表星期日,1代表星期一,以此类推)。 #### 函数实现逻辑分析 1. **初始化**: 函数开始时先将 `start_day_of_week` 初始化为2,`temp_total_day` 初始化为...
这里,`set(Calendar.DAY_OF_WEEK, ...)`将日期设置为本周的第一天,而`set(Calendar.WEEK_OF_YEAR, ...)`确保我们处在一年中的第一周。然后,`getTime()`返回的是一个`Date`对象,代表了这一周的开始日期。 此外,...
毕业设计基于机器学习python实现的重庆轨道交通客流量时空分析预测项目源码.zip 本科毕业设计,基于机器学习的重庆轨道交通客流量时空分析预测,客流量统计计算,对于站点:将每个站点抽象为一个图,利用弗洛伊德...
将每个站点抽象为一个图,利用弗洛伊德算法解决多源最短路径路径,求出乘客从站点A 进入,在站点D离开中途经过的所有站点,为途径的每个站点的人流量数加1,这样可以获取每个站点的日均人流量。 对于线路(1号线,2...
- **Week of Year (年内周数):** - `WW`: 用数字表示的年内周数(例如:`44`)。 - **Day of Year (年内第几天):** - `W`: 用数字表示的年内第几天(例如:`124`)。 #### 2. **示例** - **将当前日期转换为...
如果`time1`比`time2`早,返回-1;如果两者相等,返回0。 ### 判断闰年(isLeapYear) DateUtils提供了一个`isLeapYear`函数来判断一个给定的年份是否是闰年。如果年份能被4整除且不能被100整除,或者能被400整除,...
- 再遍历从1月到目标月份的所有月份,根据每个月的天数调整`start_day_of_week`的值。 - 对于一月、三月、五月、七月、八月、十月、十二月,每个月加3天。 - 二月根据是否为闰年来判断,闰年加29天,非闰年加28天...
12. **日期转周函数(weekofyear)** - 示例: `SELECT weekofyear('2017-07-01') AS result;` 13. **日期比较函数(datediff)** - 示例: `SELECT datediff('2017-07-01', '2017-07-02') AS result;` 14. **日期增加...
cal.set(Calendar.WEEK_OF_YEAR, 1); cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); Date date = cal.getTime(); ``` 5. `add()` 和 `roll()` 方法: - `add()` 方法用于在指定的时间字段上增加或减少值。...
- 日期转周函数 (weekofyear) - 日期比较函数 (datediff) - 日期增加函数 (date_add) - 日期减少函数 (date_sub) 六、条件函数 条件函数提供条件表达式的执行,根据条件返回不同的结果。 - If函数 (if) - 非空查找...
54. WEEKOFYEAR():返回日期的日历周(0-53) 55. YEAR():返回一年 56. YEARWEEK():返回日期的年和周 这些日期和时间函数可以满足各种日期和时间的需求,帮助开发者更方便地操作日期和时间值。
- 示例:`SELECT DAYOFYEAR(date_column) AS day_of_year;` 19. **DAYS**: 返回两个日期之间的天数差。 - 示例:`SELECT DAYS(end_date, start_date) AS days_between;` 20. **DBCLOB**: 返回DBCLOB类型的值。 ...
- 功能:根据`X`的符号返回-1、0或1。 - 示例:`SIGN(-5)`将返回-1。 11. **SQRT(X)** - 功能:返回`X`的平方根。 - 示例:`SQRT(4)`将返回2。 #### 日期与时间函数 1. **ADDTIME(expr1, expr2)** - 功能:...
每个观察结果代表 2015 年 7 月 1 日至 2017 年 8 月 31 日期间的酒店预订,包括有效到达的预订和取消的预订。 包含字段: hotel 酒店类型 - 度假酒店或城市酒店。 is_canceled 取消预订的二进制指标(1 表示取消,0...
例如,如果当前日期是月份的最后一天,再roll(-1)天,会变为该月的最后一天,而不会进入下一个月。 这些基本操作在实际开发中非常常见,尤其是在处理日期相关的业务逻辑时,如用户注册时间的记录、活动的开始和结束...