Ruby on rails Ruby on Rails,延迟的任务将不正确的日期时间序列化为GMT
我有一些代码,当它被序列化并使用延迟的_作业运行时,似乎执行不正确。为了解决这些问题,我正在运行Ubuntu11.04、Ruby1.8.7和Rails3.0.4 我的一个表中有一个datetime字段,它显然存储了特定事件的日期和时间。在我的RoR应用程序中,我通过调用strftime的应用程序使用此字段,以不同的方式对其进行格式化。此格式的输出在网页上是正确的 我还使用delayed_job将同一字段放入发送的电子邮件中(通过某些操作触发)。当电子邮件到达时,它似乎以某种方式被格式化为GMT。例如,如果数据库中的日期时间应为2011年12月11日15:30:00(下午3:30),则电子邮件将显示为2011年12月11日22:30:00(晚上10:30) 我查看了数据库,发现了一些有趣的东西:Ruby on rails Ruby on Rails,延迟的任务将不正确的日期时间序列化为GMT,ruby-on-rails,ruby,ruby-on-rails-3,serialization,delayed-job,Ruby On Rails,Ruby,Ruby On Rails 3,Serialization,Delayed Job,我有一些代码,当它被序列化并使用延迟的_作业运行时,似乎执行不正确。为了解决这些问题,我正在运行Ubuntu11.04、Ruby1.8.7和Rails3.0.4 我的一个表中有一个datetime字段,它显然存储了特定事件的日期和时间。在我的RoR应用程序中,我通过调用strftime的应用程序使用此字段,以不同的方式对其进行格式化。此格式的输出在网页上是正确的 我还使用delayed_job将同一字段放入发送的电子邮件中(通过某些操作触发)。当电子邮件到达时,它似乎以某种方式被格式化为GMT。
- 数据库中的日期时间是
2011-11-12 22:30:00
- 该应用程序在通过网络显示时,将数据正确格式化为2011年12月11日下午3:30
- 该电子邮件将数据正确格式化为2011年12月11日晚上10:30
- 当我运行一个简单打印日期和时间的小ruby文件时 现在是时间
2011-11-12 22:30:00 Z
在我的application.rb中,我有
config.time_zone = 'Mountain Time (US & Canada)'
timezone = "Mountain Time (US & Canada)"
在我的环境中,我有
config.time_zone = 'Mountain Time (US & Canada)'
timezone = "Mountain Time (US & Canada)"
有人能帮我弄清楚这是怎么回事吗?我对RoR比较陌生,所以这可能是一个非常明显、简单的问题。如果你需要更多的调试信息,请让我知道,我可以发布它。同样,如果我的问题不清楚,我可以尝试clar您可能需要在数据库中设置时区。如果是MySQL,请参阅:您可能需要在数据库中设置时区。如果是MySQL,请参阅:尝试在序列化之前将日期对象更改为字符串。尝试在序列化之前将日期对象更改为字符串。在我的例子中,我解决了在视图中显式指定时区中的方法
示例:@my\u obj.在时区中创建
我知道它并不优雅,但到目前为止,我还没有找到更好的解决方案。在我的例子中,我解决了在视图中明确指定时区中的方法
示例:@my\u obj.在时区中创建
我知道它并不优雅,但到目前为止,我还没有找到更好的解决方案。James-看来MySQL的时区设置是正确的。我运行了一个select now()代码>并返回适合我时区(山区)的日期和时间。有没有其他的方法来检查它,我需要尝试吗?那么MySQL设置正确了。一定是出了什么问题,不确定是什么。詹姆斯-看来MySQL的时区设置正确。我运行了一个select now()代码>并返回适合我时区(山区)的日期和时间。有没有其他的方法来检查它,我需要尝试吗?那么MySQL设置正确了。一定是出了什么事,不知道是什么。延迟的工作不知道任何关于时区的信息,在非工业化后会使用GMT。延迟的工作不会知道任何关于时区的信息,在非序列化后会使用GMT。