我有一个Time实例curr_time,其值为Time.now,另一个String target_date的值为,例如,“2010年4月17日”。如何将变量curr_time中的日期部分更改为target_date的值?
>> curr_time => Sun Feb 21 23:37:27 +0530 2010 >> target_date => "Apr 17, 2010"
我希望curr_time改变如下:
>> curr_time => Sat Apr 17 23:37:27 +0530 2010
如何实现这一目标?
答案 0 :(得分:16)
如果您使用 activesupport (例如在rails
环境中,或通过
require 'active_support'
require 'active_support/core_ext/date_time'
)
更改时间对象的示例。
>> t = Time.now
=> Thu Apr 09 21:03:25 +1000 2009
>> t.change(:year => 2012)
Thu Apr 09 21:03:25 +1000 2012
答案 1 :(得分:10)
时间对象是不可变的,因此您必须使用所需的值创建新的Time对象。像这样:
require 'time'
target = Time.parse(target_date)
curr_time = Time.mktime(target.year, target.month, target.day, curr_time.hour, curr_time.min)
答案 2 :(得分:3)
试试这个:
Time.parse(target_date) + curr_time.sec + curr_time.min * 60 + curr_time.hour * 60 * 60
=> Sat Apr 17 19:30:34 +0200 2010
您将从target_date获取DateTime,从curr_time获取Time。