2010-07-28 54 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