我有一个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