我试图在用户时区将时间推迟到凌晨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。
由于
答案 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
请注意,我明天要找午夜;记得"午夜"对于某一天,实际上是一天中的第一分钟,而不是最后一分钟。