使用适当的时区解析Grails中的序列化日期

时间:2015-10-22 17:09:15

标签: javascript json grails

我正在尝试在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应用程序中的时区错误,即:

  1. 在AngularJS中我正在创建新日期 - Thu Oct 22 2015 00:00:00 GMT+0200 (CEST)(这是Date对象的字符串表示形式)
  2. 接下来我通过$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

  3. 在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

  4. 那么如何强制Grails以正确的格式加载日期呢?

    PS Web浏览器和计算机都在使用CEST时区。

    我正在使用Grails 3.0

1 个答案:

答案 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