2009-11-19 7 views

Antwort

55

Grundsätzlich (hier gezeigt in irb):

>> require 'date' 

>> Date.today.to_s 
=> "2009-11-19" 

>> Date.today.yday() 
=> 323 

Für jedes Datum:

>> Date.new(y=2009,m=12,d=31).yday 
=> 365 

Oder:

>> Date.new(2012,12,31).yday 
=> 366 

@see auch: Rubin Documentation

+0

Hinweis: Sie müssen 'require‚date''first – 203

+0

@ 203, danke, meine Antwort festgelegt. – miku

+1

Cool, dass Sie zeigen, dass yday nicht für den Vergleich über Schaltjahre nach Februar ist :) – toxaq

2

Verwenden Date.new(year, month, day) ein Date Objekt für das Datum erstellen Sie benötigen, dann bekommen der Tag des Jahres mit yday:

>> require 'date' 
=> true 
>> Date.new(2009,12,31).yday 
=> 365 
>> Date.new(2009,2,1).yday 
=> 32 
1

Date#yday ist was Sie suchen.

Hier ist ein Beispiel:

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 
+0

Ich mag die Verwendung von Tests als Beispiele +1 – Toby

Verwandte Themen