Bagaimana menambahkan 10 hari ke waktu saat ini di Rails

106

Saya mencoba melakukan sesuatu seperti

Time.now + 5.days

tetapi itu tidak berhasil, meskipun samar-samar saya ingat pernah melihat, dan sangat terkesan, karena dapat melakukan sesuatu seperti 2.yearsdll.

Bagaimana cara melakukannya di Rails 3?

Yuval Karmi
sumber
Seharusnya itu berhasil. Kesalahan apa yang Anda dapatkan?
kamera
Itu akan berhasil ya. Saat Anda berada di rel, Time.zone.now terdengar lebih tepat
Ben

Jawaban:

284

Menggunakan

Time.now + 10.days

atau bahkan

10.days.from_now

Keduanya pasti berhasil. Apakah Anda yakin Anda menggunakan Rails dan bukan hanya Ruby?

Jika Anda benar-benar berada di Rails, dari mana Anda mencoba menjalankan ini? Perhatikan bahwa Dukungan Aktif harus dimuat.

senjata
sumber
@yuval bekerja pada rel dan bukan ruby..Pikir Anda mendapatkannya tetapi hanya untuk membantu orang lain
Catmandu
1
Ini luar biasa. Saya suka saya beberapa Ruby dan Rails.
wpp
5
Ada perbedaan yang halus. Time.now + 10.daysselalu mengambil zona waktu sistem Anda sedangkan 10.days.from_nowakan mengambil zona waktu UTC jika tidak ada yang diatur dalam konfigurasi rel.
Babistalikesflyingonrails
Umumnya, yang terbaik adalah digunakan Time.zone.nowsebagai pengganti Time.now.
x-yuri
21

days,, yearsdll., adalah bagian dari Dukungan Aktif, Jadi ini tidak akan berfungsi irb, tetapi harus berfungsi rails console.

Jonathan Julian
sumber
yeup - tepat. tidak bisa melakukan ini di vanilla ruby.
Yuval Karmi
1
Bekerja di irb juga. Jika Anda memiliki permata yang diinstal, lakukan saja require 'active_support/time'di awal sesi atau sebelum Anda menggunakan perintahnya
darkdefender27
10

Ini pasti berfungsi dan saya menggunakan ini di mana pun saya perlu menambahkan hari ke tanggal sekarang:

Date.today() + 5
dj kaori
sumber
10

Beberapa opsi lain, hanya untuk referensi

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

Cantumkan saja semua opsi yang saya tahu:

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

Jadi sekarang, apa bedanya jika kita peduli dengan zona waktu:

  • [1, 4] Dengan zona waktu sistem
  • [2, 3] Dengan config zona waktu aplikasi Rails Anda
  • [5] Tanggal hanya tidak ada waktu yang disertakan dalam hasil
Hieu Pham
sumber
4

Coba ini di Rails

Time.new + 10.days 

Coba ini di Ruby

require 'date'
DateTime.now.next_day(10).to_time
Rahul Patel
sumber
2

Coba ini di Ruby. Ini akan mengembalikan tanggal / waktu baru jumlah hari yang ditentukan di masa depan

DateTime.now.days_since(10)
Ramyani
sumber