2009-08-31 18 views
31

Trong C#, có một phương thức AddDays ([số ngày]) trong lớp DateTime.Có một add_days trong datetime ruby ​​không?

Có loại phương pháp nào giống như thế này trong ruby ​​không?

+3

sử dụng Rails ... Bạn có thể có một cái gì đó như thế này 't = Time.now; t + 3.days' – zfm

Trả lời

59

Lớp Date cung cấp toán tử + thực hiện điều đó.

>> d = Date.today 
=> #<Date: 4910149/2,0,2299161> 
>> d.to_s 
=> "2009-08-31" 
>> (d+3).to_s 
=> "2009-09-03" 
>> 
13

Từ Date class:

+ (n)

Return một đối tượng Date mới đó là n ngày muộn hơn hiện tại.

n có thể là giá trị âm, trong trường hợp ngày mới sớm hơn giá trị hiện tại; tuy nhiên, # -() có thể trực quan hơn.

Nếu n không phải là chữ số, một TypeError sẽ được ném. Đặc biệt, không thể thêm hai Ngày vào nhau.

19

Trong Rails có những phương pháp rất hữu ích của Fixnum lớp cho điều này (ở đây là nFixnum Ví dụ:. 1,2,3....):

Date.today + n.seconds # you can use 1.second 
Date.today + n.minutes # you can use 1.minute 
Date.today + n.hours # you can use 1.hour 
Date.today + n.days # you can use 1.day 
Date.today + n.weeks # you can use 1.week 
Date.today + n.months # you can use 1.month 
Date.today + n.years # you can use 1.year 

Đây là những thuận lợi cho việc Time lớp quá.

PS: yêu cầu tích cực mở rộng Hỗ trợ Lõi sử dụng các bằng Ruby

require 'active_support/core_ext' 
+4

Những phương pháp đó là Rails-specific – Max

1
Date.new(2001,9,01).next_day(30) # 30 - numbers of day 
# => #<Date: 2001-10-01 ... 
+0

Thêm một số giải thích với câu trả lời cho cách câu trả lời này giúp OP trong việc khắc phục vấn đề hiện tại –

5

Tôi nghĩ next_day là dễ đọc hơn so phiên bản +.

require 'date' 

DateTime.new(2016,5,17) 
# => #<DateTime: 2016-05-17T00:00:00+00:00 ((2457526j,0s,0n),+0s,2299161j)> 
DateTime.new(2016,5,17).next_day(10) 
# => #<DateTime: 2016-05-27T00:00:00+00:00 ((2457536j,0s,0n),+0s,2299161j)> 
Date.new(2016,5,17) 
# => #<Date: 2016-05-17 ((2457526j,0s,0n),+0s,2299161j)> 
Date.new(2016,5,17).next_day(10) 
# => #<Date: 2016-05-27 ((2457536j,0s,0n),+0s,2299161j)> 

http://ruby-doc.org/stdlib-2.3.1/libdoc/date/rdoc/Date.html#method-i-next_day.

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