我对Spring MVC如何处理日期有点困惑。
我做了一个控制器来接收一个Calendar对象。
@RequestParam(value = "startdate", required = false)
@DateTimeFormat(pattern="yyyy-MM-dd'T'HH:mm:ss.SSSZ") Calendar startDate
然后我写了一个单元测试,发送以下日期2012-01-10T11:00:00.000+00:00但是当我查看到达服务器端的内容时,我调用
int i = startDate.get(Calendar.HOUR_OF_DAY);
我最终得到I = 12,而不是预期的11。这是正常行为吗?还有,如果是这样的话,我错过了什么,什么是到达11:00:00的最好方法?它可能有助于提及,我目前在时区UTC+1和服务器运行本地在我的机器
我相信我找到了答案。这似乎与JVM所运行的时区有关。我把这个添加到我的启动方法
System.setProperty("user.timezone", "UTC");
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
这修复了行为,虽然我希望我没有破坏任何其他的应用程序与日期运行。单元测试仍然是绿色的,但是让我们希望其中没有假阳性