获取Ruby中任何特定日期的年度最佳方法是什么?
例如:31/dec/2009
应该返回day 365
,01/feb/2008
应该返回day 32
答案 0 :(得分:61)
基本上(在irb中显示):
>> require 'date'
>> Date.today.to_s
=> "2009-11-19"
>> Date.today.yday()
=> 323
任何日期:
>> Date.new(y=2009,m=12,d=31).yday
=> 365
或者:
>> Date.new(2012,12,31).yday
=> 366
@see还:Ruby Documentation
答案 1 :(得分:2)
使用Date.new(year, month, day)
为您需要的日期创建Date
对象,然后使用yday
获取一年中的某一天:
>> require 'date'
=> true
>> Date.new(2009,12,31).yday
=> 365
>> Date.new(2009,2,1).yday
=> 32
答案 2 :(得分:1)
Date#yday
正是您要找的。 p>
以下是一个例子:
require 'date'
require 'test/unit'
class TestDateYday < Test::Unit::TestCase
def test_that_december_31st_of_2009_is_the_365th_day_of_the_year
assert_equal 365, Date.civil(2009, 12, 31).yday
end
def test_that_february_1st_of_2008_is_the_32nd_day_of_the_year
assert_equal 32, Date.civil(2008, 2, 1).yday
end
def test_that_march_1st_of_2008_is_the_61st_day_of_the_year
assert_equal 61, Date.civil(2008, 3, 1).yday
end
end
答案 3 :(得分:0)
答案 4 :(得分:0)
您可以在不导入任何内容的情况下使用时间:
Time.new(1989,11,30).yday
或现在:
Time.now.yday