Ruby on rails 将Ruby日期转换为整数
如何将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
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