我正在尝试在Grails App中绑定日期。在application.yml
我有databindings
默认的JavaScript日期格式:
grails:
databinding:
dateFormats:
- "yyyy-MM-dd'T'hh:mm:ss.S'Z'"
- "yyyy-MM-dd'T'HH:mm:ss'Z'"
在Groovy中我正在使用params def entity = new Entity(params)
创建对象,并且所有内容都可以绑定,但是......
问题是我的Grails应用程序中的时区错误,即:
Thu Oct 22 2015 00:00:00 GMT+0200 (CEST)
(这是Date
对象的字符串表示形式)接下来我通过$http
服务发送它,JSON有效负载如下所示:{ date: "2015-10-21T22:00:00.000Z", another: "another:, property: "property" }
。
日期看起来很好,Z
在结尾意味着它是UTC所以Thu Oct 22 2015 00:00:00 GMT+0200 (CEST)
- 2小时=> 2015-10-21T22:00:00.000Z
在Grails中我正在做def entity = new Entity(params)
,这里有问题,entity.date
等于Wed Oct 21 22:00:00 CEST 2015
,这意味着Groovy / Grails将字符串2015-10-21T22:00:00.000Z
解析为CEST时区不是UTC
那么如何强制Grails以正确的格式加载日期呢?
PS Web浏览器和计算机都在使用CEST时区。
我正在使用Grails 3.0
答案 0 :(得分:2)
正确的日期时间字符串为yyyy-MM-dd'T'HH:mm:ss.SSSX
。
在下一版本中,这应该是固定的,JavaScript日期时间字符串将通过默认解析器进行解析。
更多:
https://github.com/grails/grails-core/issues/9367 https://github.com/grails/grails-core/issues/9368