我怎么能提到要扣除的具体偏移量,同时节省时间或日期时间在轨道



我有一个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时,则执行上述逻辑。在数据库中,通过扣除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

现在我在import考勤中面临time_zone问题,其中一个人在spreadsheet中填写employee check-in, out times并上传。excel表中使用的format09:30 am

所以这里我使用以下逻辑将其转换为datetime

  irb(main):004:0> "09:30 am".to_datetime
  => Mon, 07 Nov 2016 09:30:00 +0000

在这种情况下,偏移量(05:30)不会被扣除。在这种情况下如何抵扣?

你不是在比较同类

在第一种情况下,你正在做:

record.check_in.in_time_zone(record.time_zone)

取记录的datetime对象(9:30 am)并将其转换为相关时区。

第二种情况:

"09:30 am".to_datetime

这只是将日期时间设置为上午9:30 -您没有做任何转换。

在rails控制台中复制你的逻辑:

"09:30 am".to_datetime.in_time_zone('Kolkata')

,你会发现你得到正确的结果。

如果输入的"9:30 am"不是UTC,而是印度自己的时间,那么只需执行以下操作即可将其转换为UTC:

"9:30".in_time_zone('Kolkata').utc
 => 2016-11-07 04:00:00 UTC 

相关内容

  • 没有找到相关文章

最新更新