Я спробував зробити щось подібне
Time.now + 5.days
але це не спрацьовує, хоча я туманно пам'ятаю, як бачив, і був дуже вражений тим, що вмію робити щось на зразок 2.years
тощо.
Як це зробити в Rails 3?
Я спробував зробити щось подібне
Time.now + 5.days
але це не спрацьовує, хоча я туманно пам'ятаю, як бачив, і був дуже вражений тим, що вмію робити щось на зразок 2.years
тощо.
Як це зробити в Rails 3?
Відповіді:
Використовуйте
Time.now + 10.days
або навіть
10.days.from_now
Обидва однозначно працюють. Ви впевнені, що перебуваєте в Рейлах, а не тільки в Рубі?
Якщо ви напевно перебуваєте в Rails, звідки ви це намагаєтеся запустити? Зауважте, що Active Support має бути завантажено.
Time.now + 10.days
завжди підбирає часовий пояс вашої системи, тоді як 10.days.from_now
підбирає часовий пояс UTC, якщо в конфігурації рейлів нічого не встановлено.
Time.zone.now
замість Time.now
.
days
, years
тощо, є частиною Active Support, тому це не працюватиме irb
, але воно має працювати rails console
.
require 'active_support/time'
на початку сеансу або перед тим, як використовувати його команди
Деякі інші варіанти, лише для довідки
-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]
У результат не входить лише датаСпробуйте це на Rails
Time.new + 10.days
Спробуйте це на Рубі
require 'date'
DateTime.now.next_day(10).to_time