2016-08-02 8 views
0

我在刮一個網站以獲取一集發佈的日期和時間。所以我得到的是星期六在日本時間01:05(JST)。我在我的劇集表中有一個名爲廣播的字段,它有一個DateTime格式。 處理此問題並將時區更改爲(pst)的最佳方法是什麼?如何在01:05(JST)處理像星期六那樣的DateTIme風格

回答

1

假設您從字面上將字符串Saturdays at 01:05 (JST)從網站上截取出來,有幾件事情需要考慮。

首先,單個DateTime字段不是真的能像您一樣代表一個循環時間。創建像IceCube這樣的寶石是爲了處理復發的計劃日期的複雜性。但是您可以通過一個DateTime字段來獲取,假設它存儲廣播的一個實例,並且所有其他廣播每週都在同一時間和同一天。

現在,你需要分析你在這個日期所挖掘的字符串。最簡單的方法是使用Chronic寶石,它會採用各種英文措辭的時間表示,並將其變成日期。有了您的日期,你需要unpluralize「星期六」,使慢性知道剛剛找到下一個星期六:

require 'chronic' 

string = "Saturdays at 1:30 (JST)" 
broadcast = Chronic.parse(string.sub('days', 'day')) 

broadcast變量現在持有DateTime值,你可以直接存儲到數據庫中。不要擔心時區 - 慢性返回帶有區域信息的時間值,因此Rails將以UTC格式將其存儲到數據庫中,並在加載時將其轉換回服務器時區。

如果你想的時候曾經轉換爲特定的區域,你可以這樣做很容易:

pst_time = broadcast.in_time_zone('Pacific Time (US & Canada)') 
相關問題