Rails'de şimdiki saate 10 gün nasıl eklenir


106

Gibi bir şey yapmayı denedim

Time.now + 5.days

ama bu işe yaramıyor, öyle bir şey yapabildiğim için gördüğümü ve çok etkilendiğimi belli belirsiz hatırlasam da 2.years.

Bunu Rails 3'te nasıl yaparım?


Bu çalışmalı. Hangi hatayı alıyorsun?
cam

Evet işe yarayabilir. Rayların üzerindeyken, Time.zone.şimdi kulağa daha uygun geliyor
Ben

Yanıtlar:


284

Kullanım

Time.now + 10.days

ya da

10.days.from_now

İkisi de kesinlikle işe yarıyor. Sadece Ruby değil, Rails'de olduğunuzdan emin misiniz?

Kesinlikle Rails'teyseniz, bunu nereden çalıştırmaya çalışıyorsunuz? Aktif Desteğin yüklenmesi gerektiğini unutmayın.


@yuval, Ruby değil raylar üzerinde çalışıyor .. Elinde olduğunu düşünüyorum ama sadece başkalarına yardım etmek için
Catmandu

1
Bu harika. Beni biraz Ruby and Rails seviyorum.
wpp

5
İnce bir fark var. rails yapılandırmasında hiçbir şey ayarlanmadıysa, Time.now + 10.daysher zaman sistem saat diliminizi alır, ancak 10.days.from_nowUTC saat dilimini alır.
Babistalikesflyingonrails

Genel olarak, kullanmak en iyisidir Time.zone.nowyerine Time.now.
x-yuri

21

days, yearsvb., Aktif Desteğin bir parçasıdır, Bu yüzden bu işe yaramaz irb, ancak işe yaraması gerekir rails console.


yeup - açık. bunu vanilya yakutunda yapamazsınız.
Yuval Karmi

1
İrb'de de çalışır. Gem yüklediyseniz, require 'active_support/time'oturumun başında veya komutlarını kullanmadan önce bir yapın
darkdefender27

10

Bu kesinlikle işe yarıyor ve bunu geçerli tarihe gün eklemem gereken her yerde kullanıyorum:

Date.today() + 5

10

Sadece referans için bazı diğer seçenekler

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

Sadece bildiğim tüm seçenekleri listeleyin:

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

Öyleyse, saat dilimini önemsiyorsak aralarındaki fark nedir?

  • [1, 4] Sistem saat dilimiyle
  • [2, 3] Rails uygulamanızın yapılandırma saat dilimi ile
  • [5] Yalnızca tarih sonuca saat eklenmez

4

Bunu Rails'de deneyin

Time.new + 10.days 

Bunu Ruby'de dene

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

2

Bunu Ruby'de dene. Gelecekte belirtilen gün sayısı kadar yeni bir tarih / saat döndürecektir

DateTime.now.days_since(10)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.