我有一個datetime
專欄來存儲employee
check-in ,out times
。我在控制器動作邏輯捕捉辦理入住手續,我如何才能在軌道中節省時間或日期時間時扣除特定的偏移量?
def check_in
@employee = current_user.employee
punch_record = @employee.in_outs.where("date = ?", Date.today).first
punch_record.check_in = DateTime.now
punch_record.save
end
當用戶點擊
check-in
那麼上面的邏輯得到executed.And數據庫中它被扣除indian offset
保存check-in
,即(05:30)
。並在view page
,我使用in_time_zone
的方法顯示check_in
時間,回到indian timezone
,使其加入offset(05:30)
。時間正常顯示。這工作正常。
record.check_in.in_time_zone(record.time_zone).strftime(" %I:%M %P")
這裏記錄TIME_ZONE = Mumbai
現在我面臨的time_zone
問題import
考勤,當一個人填補spreadsheet
,並上傳了employee
check-in
,out times
。在excel
表中使用的format
是09:30 am
。
所以我在這裏使用下面的邏輯將它轉換成datetime
。
irb(main):004:0> "09:30 am".to_datetime
=> Mon, 07 Nov 2016 09:30:00 +0000
在這種情況下,偏移量(05:30)不會被扣除。在這種情況下如何扣除偏移量?
沒有它不工作。而不是扣除加上偏移量的偏移量。我檢查了軌道控制檯。這是輸出=>加載生產環境(Rails 4.1.5) irb(main):001:0>「09:30 am」.to_datetime.in_time_zone('Kolkata') =>星期一,2016年11月07日15: 00:00 IST +05:30 irb(main):002:0> – John
是不是正確?印度不是5個半小時 - 它是+5:30 gmt。因此上午9點30分在印度下午3點。 – David
默認情況下,datetime作爲UTC(當前GMT + 0)存儲在數據庫中...理想情況下,您應該將其保留爲UTC,我相信您正在做這些操作,並且在從中讀取時進行轉換(我相信您正在這樣做)。 – David