Spring MVC控制器以错误的UTC偏移量接收日历



我对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"));

这修复了行为,虽然我希望我没有破坏任何其他的应用程序与日期运行。单元测试仍然是绿色的,但是让我们希望其中没有假阳性

最新更新