2010-07-28 53 views
3

我有这个时间存储为一个字符串:获取当地时间

2010-07-25 4点16分25秒

这是GMT时间,一些动作我拿了。

因为我住在耶路撒冷时区,所以我想在耶路撒冷时间早上07:16显示它,而不是在3小时前的04:16:25 GMT时间。

如何正确使用Ruby on Rails以编程方式将其转换?我从服务于不同地点的用户时需要考虑的众多时区功能和考虑事项,似乎迷失了方向。

我想: Time.parse( “2010-07-25 4时16分25秒”) ,它给了我: “太阳报7月25日4时16分25秒+0300 2010”。

我想“+0300”与我在哪里的区别?

有关这方面的一些信息,或者甚至链接到一篇不假设您了解的文章的链接,都会对您有所帮助。

回答

4

您可以在environment.rb文件(如果您使用的是Rails 2.3。*)或application.rb(如果您使用的是Rails 3)中定义您的时区。

只需查看有关时区的部分,并在注释中解释所有内容。它会这样说(这是来自Rails 3):

# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone. 
# Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC. 
# config.time_zone = 'Central Time (US & Canada)' 

只取消注释,最后一行,你应该罚款。

+0

嘿斯洛博丹, 感谢您的回答,我没有收到我的电子邮件,只是在网站上。我已经在environment.rb中设置了耶路撒冷时区(是的,我重新启动了应用程序)。我需要的不仅仅是这些。正如我所说的,当我展示这一次时,我会得到“Sun Jul 25 04:16:25 +0300 2010”,而不是我耶路撒冷的时间。也许我应该搬到英国? :-)我该如何去在自己的时区显示这个明显的GMT时间? – mjnissim 2010-08-05 08:25:23

+0

实际上,现在我更近一点了,那不是UTC/GMT时间。它是UTC + 3,这是耶路撒冷时间。想想看。当你这样做时:Time.parse(“2010-07-25 04:16:25”)它给了你:“Sun Jul 25 04:16:25 +0300 2010” - 这是你输入的时间,Rails假设解析时间在耶路撒冷时区,它返回适当的时间对象。 Time.parse(“2010-07-25 04:16:25 GMT”)=> Sun Jul 25 07:16:25 +你可以通过添加GMT来告诉Time.parse你有不同的时区。 0300 2010 – 2010-08-05 11:01:49

0

配置很容易与您的系统本地区域你可以在你的application.rb中

config.time_zone = Time.now.zone 

添加这一点,你可以用这样的东西来获取本地时间

Post.created_at.localtime