在用户时区获得时间直到小时

时间:2017-01-05 16:08:55

标签: ruby-on-rails devise

我试图在用户时区将时间推迟到凌晨12:00。我怎么能在rails中做到这一点?

我希望得到时间直到凌晨12:00,然后将该时间添加到rails中的当前时间以将其存储在数据库中,因为我想要一个GMT时间为at的字段相当于12:00用户时区中的AM

我正在使用这个宝石:

gem 'time_difference', '~> 0.5.0'

为了获得两个时间戳之间的时差

TimeDifference.between(DateTime.now, created_at)

但我不确定如何在用户时区将时间推迟到凌晨12:00。

由于

1 个答案:

答案 0 :(得分:0)

给定一个特定的时区,你可以使用Rails'用于处理时区的工具,只需在午夜时间直接查找特定时区。此示例假设您的用户模型上有一个time_zone列,其中包含适当的值(例如America/Chicago或其他任何内容Rails supports):

midnight_for_user = ActiveSupport::TimeZone[user.time_zone].now.midnight.tomorrow

例如,我可以使用相同的逻辑来查找纽约时的午夜时间:

pry(main)> Time.current
=> Thu, 05 Jan 2017 10:34:02 CST -06:00
pry(main)> ActiveSupport::TimeZone['America/New_York'].now.midnight.tomorrow
=> Fri, 06 Jan 2017 00:00:00 EST -05:00

请注意,我明天要找午夜;记得"午夜"对于某一天,实际上是一天中的第一分钟,而不是最后一分钟。