118 votes

Comment ajouter 10 jours à l'heure actuelle dans Rails

J'ai essayé de faire quelque chose comme

Time.now + 5.days

mais cela ne fonctionne pas, même si je me souviens vaguement avoir vu, et avoir été très impressionné, par la possibilité de faire quelque chose comme 2.years etc.

Comment faire ça dans Rails 3 ?

0 votes

Ça devrait marcher. Quelle erreur obtenez-vous ?

0 votes

Ça devrait marcher, oui. Comme vous êtes dans des rails, Time.zone.now semble plus approprié.

306voto

gunn Points 3050

Utilisez

Time.now + 10.days

ou même

10.days.from_now

Les deux fonctionnent sans aucun doute. Es-tu sûr que tu es dans Rails et pas seulement dans Ruby ?

Si vous êtes bien dans Rails, d'où essayez-vous d'exécuter ce programme ? Notez que Active Support doit être chargé.

0 votes

@yuval il fonctionne sur rails et non ruby Je pense que vous avez compris mais juste pour aider les autres.

1 votes

C'est tout simplement fantastique. J'adore Ruby et Rails.

5 votes

Il y a une différence subtile. Time.now + 10.days prend toujours le fuseau horaire de votre système alors que 10.days.from_now prendra le fuseau horaire UTC si rien n'est défini dans la configuration de rails.

23voto

Jonathan Julian Points 9172

days , years etc. font partie du support actif, donc cela ne fonctionnera pas dans les cas suivants irb mais il devrait fonctionner dans rails console .

1 votes

Yeup - spot on. Impossible de faire ça dans vanilla ruby.

2 votes

Fonctionne aussi en irb. Si vous avez installé la gemme, faites simplement un require 'active_support/time' au début de la session ou avant d'utiliser ses commandes.

12voto

dj kaori Points 41

Cela fonctionne parfaitement et je l'utilise chaque fois que j'ai besoin d'ajouter des jours à la date actuelle :

Date.today + 5

12voto

Hieu Pham Points 1502

Quelques autres options, à titre indicatif

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

J'énumère juste 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 la configuration du fuseau horaire de votre application Rails
  • [5] Date seulement, pas de temps inclus dans le résultat

6voto

Rahul Patel Points 771

Essayez ceci sur Rails

Time.new + 10.days 

Essayez ceci sur Ruby

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X