Cách thêm 10 ngày vào thời gian hiện tại trong Rails


106

Tôi đã thử làm một cái gì đó như

Time.now + 5.days

nhưng điều đó không hiệu quả, mặc dù tôi mơ hồ nhớ mình đã nhìn thấy, và rất ấn tượng, với việc có thể làm điều gì đó như 2.yearsv.v.

Làm cách nào để làm điều đó trong Rails 3?


Cần làm việc. lỗi gì bạn nhận được?
cam

Nó sẽ hoạt động có. Khi bạn đang ở trong tình trạng khó khăn, Time.zone.now có vẻ thích hợp hơn
Ben

Câu trả lời:


284

Sử dụng

Time.now + 10.days

hoặc thậm chí

10.days.from_now

Cả hai chắc chắn hoạt động. Bạn có chắc mình đang ở trong Rails chứ không chỉ Ruby?

Nếu bạn chắc chắn đang ở trong Rails, bạn đang cố gắng chạy nó từ đâu? Lưu ý rằng Hỗ trợ tích cực phải được tải.


@yuval nó hoạt động trên đường ray và không ruby..Think bạn đã có nó nhưng chỉ để giúp đỡ người khác
Catmandu

1
Điều này thật tuyệt vời. Tôi yêu tôi một số Ruby và Rails.
wpp

5
Có một sự khác biệt tinh tế. Time.now + 10.daysluôn chọn múi giờ hệ thống của bạn trong khi 10.days.from_nowsẽ chọn múi giờ UTC nếu không có gì được đặt trong cấu hình rails.
Babistalikesflyingonrails

Nói chung, tốt nhất là sử dụng Time.zone.nowthay cho Time.now.
x-yuri

21

days, yearsv.v., là một phần của Hỗ trợ tích cực, Vì vậy, tính năng này sẽ không hoạt động irb, nhưng sẽ hoạt động rails console.


yeup - tại chỗ. không thể làm điều này trong ruby ​​vani.
Yuval Karmi

1
Hoạt động trong irb là tốt. Nếu bạn đã cài đặt gem, chỉ cần thực hiện require 'active_support/time'vào đầu phiên hoặc trước khi bạn sử dụng các lệnh của nó
darkdefender27

10

Điều này chắc chắn hoạt động và tôi sử dụng nó ở bất cứ nơi nào tôi cần thêm ngày vào ngày hiện tại:

Date.today() + 5

10

Một số tùy chọn khác, chỉ để tham khảo

-10.days.ago
# Available in Rails 4
DateTime.now.days_ago(-10)

Chỉ cần liệt kê ra tất cả các tùy chọn mà tôi biết:

[1] Time.now + 10.days
[2] 10.days.from_now
[3] -10.days.ago
[4] DateTime.now.days_ago(-10)
[5] Date.today + 10

Vì vậy, bây giờ, sự khác biệt giữa chúng là gì nếu chúng ta quan tâm đến múi giờ:

  • [1, 4] Với múi giờ hệ thống
  • [2, 3] Với múi giờ cấu hình của ứng dụng Rails của bạn
  • [5] Chỉ ngày không có thời gian trong kết quả

4

Hãy thử điều này trên Rails

Time.new + 10.days 

Hãy thử điều này trên Ruby

require 'date'
DateTime.now.next_day(10).to_time

2

Hãy thử điều này trên Ruby. Nó sẽ trả về một ngày / giờ mới số ngày được chỉ định trong tương lai

DateTime.now.days_since(10)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.