2015-10-29 63 views
0

我可以通過時區名稱或縮寫來Time.new。 我所有的工作與抵消,但我需要時區,如太平洋標準時間,格林威治標準時間等等將時區名稱傳遞給Time.new

請看下面我簡單的代碼。

以下是工作已經

Time.new(year, month, day, hr, min, sec, utc_offset) 

我想是以下工作。

Time.new(year, month, day, hr, min, sec, timezone_name/abbreviation) 

任何幫助,高度讚賞。

+0

小心 - 時區中的縮寫可能不明確。例如,CST有5種不同的解釋。是「中央標準時間」,「中國標準時間」等...查看[維基百科列表](https://en.wikipedia.org/wiki/List_of_time_zone_abbreviations)以獲取更多示例。 –

+0

@MattJohnson非常有用的評論感謝。但我只使用us_zones。但是,你是對的。我想我應該存儲完整的時區名稱。 – AMBasra

回答

0

你可以使用這個

Time.use_zone('Dublin') { 
    # Time.now.... 
} 

例子:

Time.use_zone('St. Petersburg') { DateTime.current } 

週四,2015年10月29日17時24分四十零秒+0300

Time.use_zone('Berlin') { DateTime.current } 

週四,2015年10月29日15時24分59秒+0100

對於一些詳細信息,看看在API(http://apidock.com/rails/Time/use_zone/class

更新: 可以提取所有實時信息到一個數組:

Time.now.to_a 

[20,42,如圖9所示,30,10,2015,5,303,假, 「CET」]

+0

我基本上想要存儲TimeZone。類似星期四,2015年10月29日15:24:59 +0100 PST – AMBasra

+0

@AMBasra我更新了我的回答 – rob

+0

在以下情況下失敗 2.2.2:074> Time.now.in_time_zone(「Indiana(East)」)to_a => [38,34,12,30,10,2015,5303,真,「EDT」] 2.2.2:075> Time.now_time_zone(「Eastern Time(US&Canada)」)。 to_a => [57,34,12,30,10,2015,5,303,true,「EDT」] – AMBasra

相關問題