0

このような別の時間オブジェクトから抽出された週番号もあります

other_time.strftime('%W').to_i

%W与える:

その年の週番号。週は月曜日から始まります。(00..53)

私は日の名前も持っています:

'Tuesday'

週番号で示される週の火曜日を表すDateTimeオブジェクトを作成するにはどうすればよいですか?オブジェクトの時間コンポーネントは、後のステップで変更されるため、この段階では関係ありません。

Rails3.2.0とRuby1.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

あなたは言及しましother_timeた。私はそれを利用します:

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

あなたが欲しいのは DateTime オブジェクトだと思います。

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

于 2012-06-08T18:09:11.320 に答える