Ruby:将时间和星期几应用于 DateTime
Ruby: Apply time and day of week to a DateTime
问题:
获取 DateTime 对象 "A" 并应用另一个 DateTime 对象 "B" 的星期几和时间的最简单方法是什么,这样我就有了一个新的 DateTime 对象,它位于 DateTime 的那一周对象 "A" 但具有 DateTime 对象 "B"?
的星期几和时间
一些上下文:
我正在创建一个日程安排应用程序,用户可以在其中进行定期约会。所有用户都以 DateTime 对象的形式设置他们的默认星期几和时间(我将其保存为 DateTime 但实际上我并不关心日期本身)。
当我想延长他们的定期约会(例如再延长 6 个月)时,我需要获取他们上次约会的那一周,跳转到该周内的默认星期几和时间,然后从那里延长。
require 'date'
def new_date_time(a,b)
a_date = a.to_date
new_date = a_date + (b.to_date.wday - a_date.wday)
DateTime.new(new_date.year, new_date.month, new_date.day,
b.hour, b.minute, b.second)
end
a = DateTime.new(2015,8,6,4,5,6) # Thursday
#=> #<DateTime: 2015-08-06T04:05:06+00:00 ((2457241j,14706s,0n),+0s,2299161j)>
b = DateTime.new(2015,8,3,13,21,16) # Monday
new_date_time(a,b)
#=> #<DateTime: 2015-08-03T13:21:16+00:00 ((2457238j,48076s,0n),+0s,2299161j)>
b = DateTime.new(2015,11,17,13,21,16) # Tuesday
new_date_time(a,b)
#=> #<DateTime: 2015-08-04T13:21:16+00:00 ((2457239j,48076s,0n),+0s,2299161j)>
问题:
获取 DateTime 对象 "A" 并应用另一个 DateTime 对象 "B" 的星期几和时间的最简单方法是什么,这样我就有了一个新的 DateTime 对象,它位于 DateTime 的那一周对象 "A" 但具有 DateTime 对象 "B"?
的星期几和时间一些上下文:
我正在创建一个日程安排应用程序,用户可以在其中进行定期约会。所有用户都以 DateTime 对象的形式设置他们的默认星期几和时间(我将其保存为 DateTime 但实际上我并不关心日期本身)。
当我想延长他们的定期约会(例如再延长 6 个月)时,我需要获取他们上次约会的那一周,跳转到该周内的默认星期几和时间,然后从那里延长。
require 'date'
def new_date_time(a,b)
a_date = a.to_date
new_date = a_date + (b.to_date.wday - a_date.wday)
DateTime.new(new_date.year, new_date.month, new_date.day,
b.hour, b.minute, b.second)
end
a = DateTime.new(2015,8,6,4,5,6) # Thursday
#=> #<DateTime: 2015-08-06T04:05:06+00:00 ((2457241j,14706s,0n),+0s,2299161j)>
b = DateTime.new(2015,8,3,13,21,16) # Monday
new_date_time(a,b)
#=> #<DateTime: 2015-08-03T13:21:16+00:00 ((2457238j,48076s,0n),+0s,2299161j)>
b = DateTime.new(2015,11,17,13,21,16) # Tuesday
new_date_time(a,b)
#=> #<DateTime: 2015-08-04T13:21:16+00:00 ((2457239j,48076s,0n),+0s,2299161j)>