Comment ajouter 10 jours à l'heure actuelle dans Rails

106

J'ai essayé de faire quelque chose comme

Time.now + 5.days

mais cela ne fonctionne pas, même si je me souviens vaguement d'avoir vu et d'être très impressionné par le fait de pouvoir faire quelque chose comme 2.yearsetc.

Comment faire cela dans Rails 3?

Yuval Karmi
la source
Cela devrait fonctionner. Quelle erreur obtenez vous?
cam du
Cela devrait fonctionner oui. Comme vous êtes dans les rails, Time.zone.now semble plus approprié
Ben

Réponses:

284

Utilisation

Time.now + 10.days

ou même

10.days.from_now

Les deux fonctionnent définitivement. Êtes-vous sûr que vous êtes dans Rails et pas seulement dans Ruby?

Si vous êtes définitivement dans Rails, d'où essayez-vous d'exécuter cela? Notez que le support actif doit être chargé.

gunn
la source
@yuval ça marche sur des rails et non sur des rubis..Pensez que vous l'avez mais juste pour aider les autres
Catmandu
1
C'est tout simplement fantastique. Je m'aime du Ruby et des Rails.
wpp
5
Il y a une différence subtile. Time.now + 10.daysrécupère toujours le fuseau horaire de votre système alors que 10.days.from_nowle fuseau horaire UTC est sélectionné si rien n'est défini dans la configuration des rails.
Babistalikesflyingonrails
En règle générale, il est préférable d'utiliser Time.zone.nowà la place de Time.now.
x-yuri
21

days, years, Etc., font partie d' un soutien actif, donc cela ne fonctionnera pas irb, mais il devrait fonctionner rails console.

Jonathan Julian
la source
yeup - sur place. ne peut pas faire ça en rubis vanille.
Yuval Karmi
1
Fonctionne également en irb. Si vous avez installé le gem, faites simplement un require 'active_support/time'au début de la session ou avant d'utiliser ses commandes
darkdefender27
10

Cela fonctionne définitivement et je l'utilise partout où j'ai besoin d'ajouter des jours à la date actuelle:

Date.today() + 5
dj kaori
la source
10

Quelques autres options, juste pour référence

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

Énumérez simplement toutes les options que je connais:

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

Alors maintenant, quelle est la différence entre eux si nous nous soucions du fuseau horaire:

  • [1, 4] Avec le fuseau horaire du système
  • [2, 3] Avec le fuseau horaire de configuration de votre application Rails
  • [5] Date seulement pas d'heure incluse dans le résultat
Hieu Pham
la source
4

Essayez ceci sur des rails

Time.new + 10.days 

Essayez ceci sur Ruby

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

Essayez ceci sur Ruby. Il renverra une nouvelle date / heure le nombre de jours spécifié dans le futur

DateTime.now.days_since(10)
Ramyani
la source