2016-07-08 45 views
0

我执行下面的Java代码:WEEK_OF_YEAR mismacthing和MYSQL

Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC")); 
System.out.println(cal.get(Calendar.WEEK_OF_YEAR)); 
System.out.println(cal.getTime()); 

输出:

周五7月8 8时56分04秒BST 2016

下面是我在MYSQL中执行的命令:

select week(CURDATE()), CURDATE(); 

输出:

27 2016年7月8日

如何年份值的两个星期同步?我试了week(CURDATE(),0)还是一样的结果,没有TimeZone也试过但得到同样的结果。

+0

仅供参考:Calendar.WEEK_OF_YEAR的定义因地区而异。完全避免这个类;现在被* java.time *类取代。 –

回答

2

“一年中的第一周”的定义是一个abitrary之一。你需要找出正在使用的MySQL定义是什么,并使Java匹配它,或者找出默认的Java定义并使MySQL匹配它。

在Java方面,它将受到Calendar#setFirstDayOfWeekCalendar#setMinimalDaysInFirstWeek(可能是其他人,请检查Calendar文档)的影响。

+0

我需要通用的解决方案 –

+1

@Rajesh:**是**一个通用的解决方案:确保两个系统之间的规则匹配。 (而且“我需要”是寻求帮助的非常糟糕的方式。) –