工作中遇到一个问题,在同一个页面试用了直接在MySQL中查询的周数和Java中的calendar取得的周数不相等;

仔细看了一下,MySQL的week函数的周第一天有设置,返回的周数是7,6;

select week(now(), 1), week(now(), 0);

Java中的周第一天也有设置,返回的周数是6,6;

Calendar today = Calendar.getInstance();
today.setMinimalDaysInFirstWeek(7);
today.setFirstDayOfWeek(Calendar.SUNDAY);
System.out.println(today.get(Calendar.WEEK_OF_YEAR));
today.setFirstDayOfWeek(Calendar.MONDAY);
System.out.println(today.get(Calendar.WEEK_OF_YEAR));

但是就是差了一周,在网上查了一会,看到一种说法;

把mysql week() 值加一就行了。

你测试:
select week('2016-01-01',0);
select week('2016-01-01',1);
……
select week('2016-01-01',7);
就知道,week将 01-01 计算为0或上一年的最后一周。

java是将其记为第一周。

所以,加一即可。

这东西,弄统一点多好……

最后修改日期: 2019年2月11日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。