繁体   English   中英

使用正确的时区解析 Grails 中的序列化日期

[英]Parse serialized date in Grails with proper time zone

我正在尝试在 Grails App 中绑定日期。 application.yml我有默认 JavaScript 日期格式的databindings

  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 中,我正在创建新的 Date - 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

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

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

我正在使用 Grails 3.0

正确的日期时间字符串是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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM