2015-05-27 25 views
1

在红宝石轨道上,我怎样才能将string(例如“06:00 AM”)转换为Time(“06:00 AM”)。红宝石字符串到时间转换

我想在给定的时间后得到时间3hrs。问题是,我用来保存time的字段是string。根据我的理解,我们无法评估string或者我们可以吗?我只想在给定的时间后3hrs时间,但没有将string字段转换为Time字段,这似乎是不可能的。

我可以通过Time格式获得(06:00 AM)的时间strftime("%I:%M %p"),但这不是我的场景。我只是想将string转换为time格式。

请有人可以帮忙。

回答

4

您可以拨打to_time方法。

"06:00 AM".to_time 
# => 2015-05-27 06:00:00 +0530 
+0

伟大的,但我怎样才能得到'2.hours.ago (假设)在那个时候 – SujitS

+2

@SujitS看到这个方法... http://api.rubyonrails.org/classes/ActionView/Helpers/DateHelper.html#method-i-time_ago_in_words ..只要做'time_ago_in_words(“06 :00 AM“.to_time - 2.hours)'.. –

+1

谢谢你的工作。 – SujitS

1

使用to_time与旧版本的Rails,可能会给:

ArgumentError: invalid date

在这种情况下,你可以使用:

Time.parse("06:00 AM") 
# => 2015-05-27 06:00:00 +0530 
+0

伟大的,但我怎么能得到2.hours.ago(假设)与那个时候 – SujitS

+0

@SujitS arup已经回答了正确的,所以即时通讯不在这里更新。 :) – shivam

+1

谢谢。不幸的是,我不能接受这两个答案是正确的。 :) – SujitS