2009-11-19 23 views

Trả lời

55

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

+0

lưu ý: bạn cần phải 'đòi hỏi 'date''first – 203

+0

@ 203, cảm ơn, cố định câu trả lời của tôi. – miku

+1

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

2

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 
1

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

Tôi thích sử dụng các bài kiểm tra làm ví dụ +1 – Toby

Các vấn đề liên quan