首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将ruby Gem Chronic的默认时区设置为没有rails的特定时区

如何将ruby Gem Chronic的默认时区设置为没有rails的特定时区
EN

Stack Overflow用户
提问于 2013-05-28 04:31:49
回答 1查看 1.5K关注 0票数 1

问题

默认情况下,Chronic gem使用系统时区作为默认时区。

他们在这里提到(https://github.com/mojombo/chronic#time-zones),我可以使用ActiveSupports Time.zone来改变这一点。但我使用的不是Rails,我使用的是Sinatra,包含主动支持只是为了利用timezone类,这似乎是不必要的。

我还能怎么做呢?

我想要做的。

我使用Chronic作为系统报告/仪表板和统计数据。

服务器在utc时间将时间戳存储在数据库的created_at字段中。当然,我们以PDT格式运行我们的报告。

我想要将默认时区设置为America/Los Angeles。因此:

代码语言:javascript
复制
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"

我如何才能做到这一点呢?

EN

回答 1

Stack Overflow用户

发布于 2013-05-28 05:51:55

我会将这篇文章作为评论发表,因为我对基本上是someone else's answer的东西感到不舒服,但我在评论中没有足够的空间。在这些情况下,TZ环境变量非常有用。看看这个:

代码语言:javascript
复制
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变量设置运行,或者在退出时操纵时间。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16780191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档