Rails:采用未格式化的日期时间并为其分配一个时区而不更改时间?

时间:2017-06-26 19:48:47

标签: ruby-on-rails timezone

我正在从API导入一个对象,其日期时间如下所示:

"2017-06-28 09:00:00"

此时间位于用户的时区,这在我的应用程序中是已知的。 (即Pacific Time (US & Canada)

日期时间以UTC格式datetime格式存储在我的数据库中。当我们在前端显示日期时,我们会考虑用户的时区(即datetime.in_time_zone(user_time_zone))。

如何正确保存数据库中的日期时间?

1 个答案:

答案 0 :(得分:0)

您应该可以将应用时区附加到日期时间字符串的末尾。

time = "2017-06-28 09:00:00"
time += Time.zone.name

解析会给你Pacific Time (US & Canada)的时间。或者使用ActiveSupport

time_pacific = DateTime.parse(time)

### ActiveSupport version ###

time_pacific = ActiveSupport::TimeZone.new(Time.zone.name).parse("2017-06-28 09:00:00")

然后,您可以在其上调用#utc以从原始字符串中获取正确的UTC时间。

time_utc = time_pacific.utc