2016-03-08 48 views
0

用戶的屬性是start_time,end_timetime_zone如何在rails上管理ruby中的不同time_zones

我只保存時間不宜日期和用戶的time_zone e.g

start_time => "09:00" 
end_time => "02:00" 
time_zone => "Samoa" 

用戶只稱爲B根據給定time_zone給出start_timeend_time /瓦。我如何檢查這個?

我的研究,我發現這個

in_time_zone('Eastern Time (US & Canada)') 

我要檢查該用戶是否可用根據其start_timeend_time基於time_zone

+0

這是時區將適用於整個應用程序? –

+0

不,不......這取決於用戶時間zeon –

+1

你的問題是什麼?請說出可回答的問題,以便我們能夠回答。 – mudasobwa

回答

2
server_tz = Time.zone # zone on server 
server_now = server_tz.now # time on server right now 

Time.use_zone(time_zone) do # ⇐ user’s time zone, 'Samoa' 
    server_start, server_end = %i|start_time end_time|.map do |t| 
    # ⇓ parse in user time zone and convert to server tz 
    Time.zone.parse("#{Date.today} #{t}").in_time_zone(server_tz) 
    end 
    # ⇓ use case-triple-equal to check if time is in between 
    (server_start..server_end) === server_now 
end 
+0

謝謝:)你能否精心製作這個 –

+1

我已經在代碼中添加了評論,解釋了每一步發生的事情。你期望什麼更詳細闡述? – mudasobwa

+0

爲什麼我們得到服務器時間...我們的目的只是檢查用戶時間 –

相關問題