Cách tốt nhất để có được ngày trong năm cho bất kỳ ngày cụ thể nào trong Ruby?Làm thế nào để có được ngày trong năm trong ruby?
Ví dụ: 31/dec/2009
nên trở day 365
, và 01/feb/2008
nên trở day 32
Cách tốt nhất để có được ngày trong năm cho bất kỳ ngày cụ thể nào trong Ruby?Làm thế nào để có được ngày trong năm trong ruby?
Ví dụ: 31/dec/2009
nên trở day 365
, và 01/feb/2008
nên trở day 32
Về cơ bản (được hiển thị tại đây trong irb):
>> require 'date'
>> Date.today.to_s
=> "2009-11-19"
>> Date.today.yday()
=> 323
Đối với bất kỳ ngày:
>> Date.new(y=2009,m=12,d=31).yday
=> 365
Hoặc:
>> Date.new(2012,12,31).yday
=> 366
@see cũng: Ruby Documentation
bạn có thể làm điều gì đó với civil_to_jd (y, m, d, sg = GREGORIAN)
từ
Sử dụng Date.new(year, month, day)
để tạo ra một đối tượng Date
cho ngày bạn cần, sau đó nhận được ngày trong năm với yday
:
>> require 'date'
=> true
>> Date.new(2009,12,31).yday
=> 365
>> Date.new(2009,2,1).yday
=> 32
Date#yday
là những gì bạn đang tìm kiếm.
Dưới đây là một ví dụ:
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
Tôi thích sử dụng các bài kiểm tra làm ví dụ +1 – Toby
lưu ý: bạn cần phải 'đòi hỏi 'date''first – 203
@ 203, cảm ơn, cố định câu trả lời của tôi. – miku
Thật tuyệt khi bạn chứng minh rằng yday không tuyệt vời để so sánh trong những năm nhuận sau tháng 2 :) – toxaq