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.