Phr*_*ogz 88

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
Run Code Online (Sandbox Code Playgroud)

  • 是否有Ruby 1.8的解决方案.*? (2认同)
  • 自纪元以来的第二个例子是错误的.请访问http://stackoverflow.com/a/4492607/432. (2认同)

小智 21

日期不能直接成为整数.例如:

$ 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)>
Run Code Online (Sandbox Code Playgroud)

您可以选择将日期转换为一个时间,然后是一个Int,它将为您提供自纪元以来的秒数:

$ Date.today.to_time.to_i
=> 1514523600
Run Code Online (Sandbox Code Playgroud)

或者想出一些你想要的其他数字,比如epoch:

$ Date.today.to_time.to_i / (60 * 60 * 24)  ### Number of seconds in a day
=> 17529   ### Number of days since epoch
Run Code Online (Sandbox Code Playgroud)


Ena*_*ane 9

Time.now.to_i

自纪元格式以来的秒数

  • 请注意,`to_time`将使用系统时区,因此您可能希望显式:`my_date.to_time(:utc).to_i`. (10认同)
  • 您可以使用`my_date.to_time`将`Date`对象转换为`Time`对象 (4认同)

Now*_*ker 5

当你有一个任意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"
Run Code Online (Sandbox Code Playgroud)