2009-11-19 17 views

Respuesta

55

Básicamente (se muestra aquí en irb):

>> require 'date' 

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

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

Para cualquier fecha:

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

O:

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

@see también: Rubí Documentation

+0

nota: hay que requerir ' 'date''first – 203

+0

@ 203, gracias, fija mi respuesta. – miku

+1

Es genial que demuestres que el día yday no es ideal para la comparación entre años bisiestos después de febrero :) – toxaq

2

Uso Date.new(year, month, day) para crear un objeto Date para la fecha que necesita, a continuación, obtener el día del año con yday:

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

Date#yday es lo que estás buscando.

He aquí un ejemplo:

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

Me gusta el uso de pruebas como ejemplos +1 – Toby

Cuestiones relacionadas