我在这些城市中有一个城市和事件系统。当用户创建事件时,它与城市相关联,因此与时区相关联。我对Ruby的各种实现(日期,时间,日期时间)以及如何处理相对于城市时区的事件时间的保存和显示感到困惑。
我的数据库中有一个datetime列。我的HTML表单有一个城市字段(因此也就是该城市的时区),我使用datetime_select()为用户字段输入事件的日期和时间。这个想法是,如果用户选择了“西雅图”,然后是4月1日晚上7点,那么用户根本不必担心时区,并且假设他们将其设置为西雅图时间晚上7点。我想将此日期时间保存为UTC(在从西雅图时间调整为UTC之后)或将西雅图时区应用于它而不更改指定的小时。由于我在将表单数据保存到数据库时使用了批量分配,我猜我需要在保存之前更改数据(调整时区),否则,它会假设这个晚上7点的时间已经是UTC了,哪个是当然不是。
当我从数据库中显示此信息时,它将位于时区的上下文中,因此在显示此事件时,系统知道它在西雅图,因此将显示在晚上7点(作为创建事件的原始用户)意)。
我应该如何处理?我应该使用什么实现(日期,时间,日期时间),以及在从数据库保存和加载数据时应该进行哪些转换,以便用户始终查看当地时间?