0

我也有一个星期数,从像这样的另一个时间对象中提取

other_time.strftime('%W').to_i

%W给出:

一年中的周数。一周从星期一开始。(00..53)

我也有一个天的名字:

'Tuesday'

如何构建一个 DateTime 对象,该对象代表由周数指示的一周中的星期二?对象的时间分量在此阶段无关紧要,因为它将在后面的步骤中更改。

我正在使用 Rails 3.2.0 和 Ruby 1.9.2p320。

编辑:错误地声明我想要一个 Time 对象。我实际上想要一个 DateTime 对象。

4

3 回答 3

1

您可以根据您想要的日期检查日期,并进行相应调整。这不是很好,但它确实有效。

$ irb
1.9.3p0 :001 > require 'date'
 => true 
1.9.3p0 :002 > other_date = DateTime.now
 => #<DateTime: 2012-06-08T14:23:44-04:00 ((2456087j,66224s,205565000n),-14400s,2299161j)> 
1.9.3p0 :003 > week = other_date.strftime('%W').to_i
 => 23 
1.9.3p0 :004 > target_day = 2 # Tuesday
 => 2 
1.9.3p0 :005 > while other_date.wday > target_day ; other_date = other_date.prev_day ; end
 => nil 
1.9.3p0 :006 > while other_date.wday < target_day ; other_date = other_date.next_day ; end
 => nil 
1.9.3p0 :007 > other_date # Tuesday of this week
 => #<DateTime: 2012-06-05T14:23:44-04:00 ((2456084j,66224s,205565000n),-14400s,2299161j)> 
1.9.3p0 :008 > other_date.strftime('%W').to_i == week
 => true
于 2012-06-08T18:24:49.090 回答
0

我认为你想要的是一个 DateTime 对象。

http://api.rubyonrails.org/classes/DateTime.html

于 2012-06-08T18:09:11.320 回答
0

你提到过other_time。我会利用它:

other_time.beginning_of_week + DateTime::DAYNAMES.rotate.index('Tuesday').to_i.days
于 2012-06-08T20:32:15.397 回答