web-dev-qa-db-ja.com

変換Ruby Date to Integer

Ruby Dateを整数に変換するにはどうすればよいですか?

56
Brig

日付を直接整数にすることはできません。例:

$ Date.today
=> #<Date: 2017-12-29 ((2458117j,0s,0n),+0s,2299161j)>
$ Date.today.to_i
=> NoMethodError: undefined method 'to_i' for #<Date: 2017-12-29 ((2458117j,0s,0n),+0s,2299161j)>

あなたのオプションは、日付を時間に変え、次にエポックからの秒数を与えるIntを変えることです:

$ Date.today.to_time.to_i
=> 1514523600

または、エポック以降の日数のように、他の番号を考えます:

$ Date.today.to_time.to_i / (60 * 60 * 24)  ### Number of seconds in a day
=> 17529   ### Number of days since Epoch
18
user9153631
t = Time.now
# => 2010-12-20 11:20:31 -0700

# Seconds since Epoch
t.to_i
#=> 1292869231

require 'date'
d = Date.today
#=> #<Date: 2010-12-20 (4911101/2,0,2299161)>

Epoch = Date.new(1970,1,1)
#=> #<Date: 1970-01-01 (4881175/2,0,2299161)>

d - Epoch
#=> (14963/1)

# Days since Epoch
(d - Epoch).to_i
#=> 14963

# Seconds since Epoch
d.to_time.to_i
#=> 1292828400
87
Phrogz

Time.now.to_i

エポック形式からの秒数

9
EnabrenTane

任意のDateTimeオブジェクトがある場合のRuby 1.8の解決策:

1.8.7-p374 :001 > require 'date'
 => true 
1.8.7-p374 :002 > DateTime.new(2012, 1, 15).strftime('%s')
 => "1326585600"
5
Nowaker