问题
默认情况下,Chronic gem使用系统时区作为默认时区。
他们在这里提到(https://github.com/mojombo/chronic#time-zones),我可以使用ActiveSupports Time.zone来改变这一点。但我使用的不是Rails,我使用的是Sinatra,包含主动支持只是为了利用timezone类,这似乎是不必要的。
我还能怎么做呢?
我想要做的。
我使用Chronic作为系统报告/仪表板和统计数据。
服务器在utc时间将时间戳存储在数据库的created_at字段中。当然,我们以PDT格式运行我们的报告。
我想要将默认时区设置为America/Los Angeles。因此:
d = Chronic.parse("1 days ago at midnight")
date = d.localtime #Should give me a date like "2013-05-27 00:00:00"
utc_date = date.utc #Should give me a date like "2013-05-27 07:00:00"我如何才能做到这一点呢?
发布于 2013-05-28 05:51:55
我会将这篇文章作为评论发表,因为我对基本上是someone else's answer的东西感到不舒服,但我在评论中没有足够的空间。在这些情况下,TZ环境变量非常有用。看看这个:
def with_time_zone(tz_name)
prev_tz = ENV['TZ']
ENV['TZ'] = tz_name
yield
ensure
ENV['TZ'] = prev_tz
end
with_time_zone('US/Pacific') { Chronic.parse("1 days ago at midnight") }
# => 2013-05-27 08:00:00 0100
with_time_zone('US/Pacific') { Chronic.parse("1 days ago at midnight").localtime }
# => 2013-05-27 00:00:00 -0700您可以使用正确的区域设置服务器的本地时间,让整个应用程序以您喜欢的方式使用TZ变量设置运行,或者在退出时操纵时间。
https://stackoverflow.com/questions/16780191
复制相似问题