我有一个提供议程功能的应用程序。
免责声明:我真的很喜欢Rails和AR的功能,这只是为了问我下次如何更好地利用它的功能。
由于它必须由欧洲团队使用,因此它使用+0200计时信息开发。我知道时区内容由AR处理,基本数据始终以UTC格式存储。
我得到的问题(但我已经解决了,只是希望得到一些反馈,以便下次更好地考虑)是当我存储新约会时我也会在{{1}的末尾强制执行“+0200”调用(es。DateTime.parse
然后我将其设置为记录属性。当然DateTime.parse("#{day} #{hour} +0200")
在数据层中存储为10:00
,这很好。
然后当我使用配置的AR时区(例如08:00
)使用类似Rome
之类的内容检索数据时,当我们处于CEST白天时间时,它会正确转换回来。当@appointment.start_at
设置为CET(+0100)日期时,问题就开始发生(但我总是将其存储在强制执行CEST +0200的数据库中)。
数据库start_at
内部始终相同,因此在使用start_at
保存约会时,UTC表示始终为08:00
,但AR转换使用错误的日光转换(CET)。
我知道我可以通过简单地在UTC上工作来跳过这一点,所以我不必对夏令时进行任何考虑,但AR本身无法以某种方式记住我存储它似乎有点混乱而CEST正在运行。
执行查询时我和存储时一样,所以我将“+0200”附加到所有DateTimes,并且所有日期时间都重新开始,但是在显示时我需要检查TimeZone是“CET”还是“CEST”并且向CET添加10:00
(否则会导致约会在预定时间前1小时签署)。
我想我下次应该用“in_time_zone”更改“+0200”,但我也允许用户手动写一小时进行搜索,当然这也是同时“CET”或“CEST”,当然我不能强制用户按照UTC格式编写。
谢谢,