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?


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.


@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.


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

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

4

Coba ini di Rails

Time.new + 10.days 

Coba ini di Ruby

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

2

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

DateTime.now.days_since(10)
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.