Ruby on rails 将Ruby日期转换为整数

Ruby on rails 将Ruby日期转换为整数,ruby-on-rails,ruby,datetime,date,Ruby On Rails,Ruby,Datetime,Date,如何将Ruby日期转换为整数?t=Time.now 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) #=> #<Dat

如何将Ruby日期转换为整数?

t=Time.now
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
# => 2010-12-20 11:20:31 -0700 #年代以来的秒数 t、 托伊 #=> 1292869231 需要“日期” d=今天的日期 #=> # 历元=新日期(1970,1,1) #=> # d时代 #=> (14963/1) #纪元以来的日子 (d-纪元)至 #=> 14963 #年代以来的秒数 d、 时间到了 #=> 1292828400

当您有任意的
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"

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

$ 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)>
或者想出你想要的其他数字,比如从大纪元算起的天数:

$ 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

我最近不得不这么做,并花了一些时间来解决这个问题,但我就是这样找到了一个解决方案,它可能会给你一些想法:

require 'date'
today = Date.today

year = today.year
month = today.mon
day = day.mday

year = year.to_s

month = month.to_s

day = day.to_s    


if month.length <2
  month = "0" + month
end

if day.length <2
  day = "0" + day
end

today = year + month + day

today = today.to_i

puts today
需要“日期”
今天
年=今天。年
月份=今天。星期一
day=day.mday
年=年到年
月=月到月
day=day.to_

如果month.length这个整数代表什么?我需要显示一个图表。所以我想调整日期。MinDate将为零。Max date将是100,然后,如我的解决方案所示,只需减去两个
date
对象即可得到它们之间的天数。如果您实际上指的是日期/时间戳,还可以减去
时间
对象(在这种情况下,您可以得到它们之间的秒数,或者可以使用
日期时间
对象(在实例之间产生小数天)。可能重复的我以日期对象而不是时间对象开始。您可以使用
my\u date将
date
对象转换为
time
对象。to\u time
请注意,
to\u time
将使用系统时区,因此您可能希望明确:
my\u date.to\u time(:utc).to_i
。我在核心文档中没有看到to_time
:直到Ruby 1.9.2()。在这一点上,您可以使用
来_i
。Ruby 1.8有解决方案吗。*@JellicleCat您需要什么?将Ruby日期转换为时间?获取自纪元以来的天数?获取自纪元以来的秒数?自纪元以来的秒数。我知道我可以执行
Time.utc(日期.年,日期.月,日期.日)
。我希望有更优雅的外观。你的秒自纪元示例是错误的。相反,请参见。Token+1,但你知道,Ruby 1.8很快就会消亡。只要还有1.8应用程序可以完成它们的工作,我不相信:)这是一个很好的解决方案,但是,它产生的数字不会很好地扩展。由于这一事实,月份是1-12天,天数是1-30天。在这些范围内会有差距。
require 'date'
today = Date.today

year = today.year
month = today.mon
day = day.mday

year = year.to_s

month = month.to_s

day = day.to_s    


if month.length <2
  month = "0" + month
end

if day.length <2
  day = "0" + day
end

today = year + month + day

today = today.to_i

puts today