Як додати 10 днів до поточного часу в Rails


106

Я спробував зробити щось подібне

Time.now + 5.days

але це не спрацьовує, хоча я туманно пам'ятаю, як бачив, і був дуже вражений тим, що вмію робити щось на зразок 2.yearsтощо.

Як це зробити в Rails 3?


Це має спрацювати. Яку помилку ви отримуєте?
камера

Це могло б працювати так. Оскільки ви знаходитесь у рейках, Time.zone.now здається більш підходящим
Бен

Відповіді:


284

Використовуйте

Time.now + 10.days

або навіть

10.days.from_now

Обидва однозначно працюють. Ви впевнені, що перебуваєте в Рейлах, а не тільки в Рубі?

Якщо ви напевно перебуваєте в Rails, звідки ви це намагаєтеся запустити? Зауважте, що Active Support має бути завантажено.


@yuval це працює на рейках і не ruby..Think ви отримали його , але тільки , щоб допомагати іншим
Catmandu

1
Це просто фантастично. Я люблю мене трохи Ruby і Rails.
wpp

5
Є тонка різниця. Time.now + 10.daysзавжди підбирає часовий пояс вашої системи, тоді як 10.days.from_nowпідбирає часовий пояс UTC, якщо в конфігурації рейлів нічого не встановлено.
Babistalikesflyingonrails

Як правило, найкраще використовувати Time.zone.nowзамість Time.now.
x-yuri

21

days, yearsтощо, є частиною Active Support, тому це не працюватиме irb, але воно має працювати rails console.


yeup - пляма на. не можу цього зробити у ванільному рубіні.
Юваль Кармі

1
Працює і в irb. Якщо у вас встановлений дорогоцінний камінь, просто зробіть require 'active_support/time'на початку сеансу або перед тим, як використовувати його команди
darkdefender27

10

Це безумовно працює, і я використовую це там, де мені потрібно додати дні до поточної дати:

Date.today() + 5

10

Деякі інші варіанти, лише для довідки

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

Просто перерахуйте всі параметри, які я знаю:

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

Отже, яка різниця між ними, якщо ми дбаємо про часовий пояс:

  • [1, 4] З системним часовим поясом
  • [2, 3] З конфігураційним часовим поясом програми Rails
  • [5] У результат не входить лише дата


2

Спробуйте це на Рубі. Він поверне нову дату / час вказану кількість днів у майбутньому

DateTime.now.days_since(10)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.