¿Cuál es la mejor manera de obtener el día del año para una fecha específica en Ruby?¿Cómo obtener el día del año en ruby?
Por ejemplo: 31/dec/2009
deberían volver day 365
y 01/feb/2008
deberían volver day 32
¿Cuál es la mejor manera de obtener el día del año para una fecha específica en Ruby?¿Cómo obtener el día del año en ruby?
Por ejemplo: 31/dec/2009
deberían volver day 365
y 01/feb/2008
deberían volver day 32
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
que podría ser capaz de hacer algo con civil_to_jd (Y, M, D, sg = gregoriano)
de
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
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
Me gusta el uso de pruebas como ejemplos +1 – Toby
nota: hay que requerir ' 'date''first – 203
@ 203, gracias, fija mi respuesta. – miku
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