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.