0

我对 Spring MVC 如何处理日期有点困惑。

我制作了一个接收日历对象的控制器。

@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 时区并且服务器在我的机器上本地运行可能会有所帮助

4

1 回答 1

1

我相信已经找到了答案。它似乎与运行 JVM 的时区有关。我基本上将其添加到我的启动方法中

    System.setProperty("user.timezone", "UTC");
    TimeZone.setDefault(TimeZone.getTimeZone("UTC"));

这修复了行为,尽管我希望我没有破坏运行日期的应用程序中的任何其他内容。单元测试仍然是绿色的,但希望它们中没有误报

于 2013-04-24T09:22:19.737 回答