如何获得红宝石中的一天?

时间:2009-11-19 15:09:57

标签: ruby datetime date

获取Ruby中任何特定日期的年度最佳方法是什么?

例如:31/dec/2009应该返回day 36501/feb/2008应该返回day 32

5 个答案:

答案 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正是您要找的。

以下是一个例子:

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)

你可以用civil_to_jd做某事(y,m,d,sg = GREGORIAN)

来自

http://ruby-doc.org/core/classes/Date.html

答案 4 :(得分:0)

您可以在不导入任何内容的情况下使用时间:

Time.new(1989,11,30).yday

或现在:

Time.now.yday