具有夏令时更改的Magnolia CMS DateFieldDefinition问题

时间:2016-10-17 16:04:15

标签: java datetime magnolia

使用Magnolia CMS' DateFieldDefinition class时:如果我的计算机当前日期与保存日期的夏令时不匹配,则保存日期的时间将不正确。

相关课程:info.magnolia.ui.form.field.definition.DateFieldDefinition

相关的Vaadin component "Date and Time Input with DateField"

Another person seemed to have the same problem

编辑:Magnolia CMS appears to have a ticket about this issue already

实施例

在此示例中,我在本地运行Magnolia CMS

  1. 我的电脑当前日期 2016年10月17日

  2. 我的电脑的TimeZone是 “瑞士/苏黎世” ;因此我在GMT+2 for the current date (summer time for my time zone)

  3. 在Magnolia管理面板中,我在 2016年11月3日hence that date is in winter time for my time zone, so GMT+1

  4. 上保存了日期

    Saved date when machine date is Oct 17th, 2016

    这就是它变得有趣的地方:

    1. 我将计算机的日期更改为 2016年11月2日hence I am on GMT+1 (winter time for my time zone)

    2. 在Magnolia管理面板中,我打开该日期,显示少于一小时

    3. Saved date when machine date is Nov 2rd 2016

      插图

      Switzerland/Zurich - time changes & time zones

      Switzerland/Zurich - November winter time

      Switzerland/Zurich - October winter time

      Same issue described in Magnolia Doc's comments

1 个答案:

答案 0 :(得分:4)

由于以下几个问题,Magnolia 5中的日期/时间实施(可能仍然)相当糟糕:

  • 未能区分时间点(例如Skype与某人可能在另一个时区预约)和“概念”时间(例如,何时做早餐的注意事项 - 无论何时何时都会在7:00区域,所以它不是关于特定的时间点,而是关于7点的概念)
  • 它将日期保存为时间戳,但日期既不是时间戳也不是时间跨度。这种不准确导致了下一个问题:
  • 由于Magnolia 5将日期视为时间戳,而Magnolia 5的时间戳始终作为“时间点”处理,因此Magnolia 5将日期视为时间点,尽管这总是错误的。日期总是只是“概念”(在上面意义上),例如出生日期。如果我出生于1980年1月1日,那就是我的出生日期,那在每个时区都是如此。我的出生日期不是1979年12月31日的另一个时区,就像前面提到的“时间点”语义一样。
  • 日期和时间被保存为JCR中Calendar的实例,即带有时区的时间戳。将数据从一个Magnolia实例传输到另一个实例(导出,导入,激活)时,实际时间戳按原样复制,它们未转换为目标系统的时区。这意味着当目标系统最终读取值时,它可能会看到错误的日期和/或时间,除非它明确地转换了值。
  • Magnolia曾经使用浏览器的时区通过Vaadin日期/时间字段读取用户的日期/时间,但是使用服务器时区将它们存储在JCR中。这意味着在业务逻辑中始终存在可能需要或可能不需要的隐式转换。在许多情况下,错误的值最终会出现在存储库中(例如,在输入出生日期时),因此基于它们的后续处理有一定的出错概率。无论如何,必须预期存储库中保存的日期/时间不是用户输入的日期/时间。

在一张支持票中,我写信给Magnolia关于这些问题,他们说他们已经将它固定在Magnolia CORE 5.4.11中,该版本将从5.5.1开始提供。我还没有测试过这些修复程序,但是除非你使用这个修复版本,否则我不建议你期待一个简单的解决方案来解决你的问题,这是我上面提到的问题。我这样做只是为了记录除了你需要他们已经实现的用例之外,为你的用例提供正确的行为是多么的空间。

相关问题