Spec-Zone.ru › Ruby on Rails 4.2

модуль DateAndTime::Calculations

Константы

DAYS_INTO_WEEK

Открытые методы экземпляров

all_month() Показать исходный код
# File activesupport/lib/active_support/core_ext/date_and_time/calculations.rb, line 234
def all_month
  beginning_of_month..end_of_month
end

Возвращает диапазон, представляющий весь месяц текущей даты/времени.

all_quarter() Показать исходный код
# File activesupport/lib/active_support/core_ext/date_and_time/calculations.rb, line 239
def all_quarter
  beginning_of_quarter..end_of_quarter
end

Возвращает диапазон, представляющий весь квартал текущей даты/времени.

all_week(start_day = Date.beginning_of_week) Показать исходный код
# File activesupport/lib/active_support/core_ext/date_and_time/calculations.rb, line 229
def all_week(start_day = Date.beginning_of_week)
  beginning_of_week(start_day)..end_of_week(start_day)
end

Возвращает диапазон, представляющий всю неделю текущей даты/времени. Неделя начинается со start_day, по умолчанию это Date.week_start или config.week_start при установке.

all_year() Показать исходный код
# File activesupport/lib/active_support/core_ext/date_and_time/calculations.rb, line 244
def all_year
  beginning_of_year..end_of_year
end

Возвращает диапазон, представляющий весь год текущей даты/времени.

at_beginning_of_month()
Псевдоним для: beginning_of_month
at_beginning_of_quarter()
Псевдоним для: beginning_of_quarter
at_beginning_of_week(start_day = Date.beginning_of_week)
Псевдоним для: beginning_of_week
at_beginning_of_year()
Псевдоним для: beginning_of_year
at_end_of_month()
Псевдоним для: end_of_month
at_end_of_quarter()
Псевдоним для: end_of_quarter
at_end_of_week(start_day = Date.beginning_of_week)
Псевдоним для: end_of_week
at_end_of_year()
Псевдоним для: end_of_year
beginning_of_month() Показать исходный код
# File activesupport/lib/active_support/core_ext/date_and_time/calculations.rb, line 80
def beginning_of_month
  first_hour(change(:day => 1))
end

Возвращает новую дату/время в начале месяца. Объекты DateTime будут иметь время, установленное на 0:00.

Также алиас: at_beginning_of_month
beginning_of_quarter() Показать исходный код
# File activesupport/lib/active_support/core_ext/date_and_time/calculations.rb, line 88
def beginning_of_quarter
  first_quarter_month = [10, 7, 4, 1].detect { |m| m <= month }
  beginning_of_month.change(:month => first_quarter_month)
end

Возвращает новую дату/время в начале квартала. Пример: 1 января, 1 июля, 1 октября. Объекты DateTime будут иметь время, установленное на 0:00.

Также алиас: at_beginning_of_quarter
beginning_of_week(start_day = Date.beginning_of_week) Показать исходный код
# File activesupport/lib/active_support/core_ext/date_and_time/calculations.rb, line 185
def beginning_of_week(start_day = Date.beginning_of_week)
  result = days_ago(days_to_week_start(start_day))
  acts_like?(:time) ? result.midnight : result
end

Возвращает новую дату/время, представляющую начало этой недели в заданный день. Неделя предполагается начинающейся в start_day, по умолчанию Date.beginning_of_week или config.beginning_of_week при установке. Объекты DateTime имеют время, установленное на 0:00.

Также алиас: at_beginning_of_week
beginning_of_year() Показать исходный код
# File activesupport/lib/active_support/core_ext/date_and_time/calculations.rb, line 106
def beginning_of_year
  change(:month => 1).beginning_of_month
end

Возвращает новую дату/время в начале года. Пример: 1 января. Объекты DateTime будут иметь время, установленное на 0:00.

Также алиас: at_beginning_of_year
days_ago(days) Показать исходный код
# File activesupport/lib/active_support/core_ext/date_and_time/calculations.rb, line 39
def days_ago(days)
  advance(:days => -days)
end

Возвращает новую дату/время, указанное количество дней назад.

days_since(days) Показать исходный код
# File activesupport/lib/active_support/core_ext/date_and_time/calculations.rb, line 44
def days_since(days)
  advance(:days => days)
end

Возвращает новую дату/время, указанное количество дней в будущем.

days_to_week_start(start_day = Date.beginning_of_week) Показать исходный код
# File activesupport/lib/active_support/core_ext/date_and_time/calculations.rb, line 175
def days_to_week_start(start_day = Date.beginning_of_week)
  start_day_number = DAYS_INTO_WEEK[start_day]
  current_day_number = wday != 0 ? wday - 1 : 6
  (current_day_number - start_day_number) % 7
end

Возвращает количество дней до начала недели в заданный день. Неделя предполагается начинающейся в start_day, по умолчанию Date.beginning_of_week или config.beginning_of_week при установке.

end_of_month() Показать исходный код
# File activesupport/lib/active_support/core_ext/date_and_time/calculations.rb, line 214
def end_of_month
  last_day = ::Time.days_in_month(month, year)
  last_hour(days_since(last_day - day))
end

Возвращает новую дату/время, представляющую конец месяца. Объекты DateTime будут иметь время, установленное на 23:59:59.

Также алиас: at_end_of_month
end_of_quarter() Показать исходный код
# File activesupport/lib/active_support/core_ext/date_and_time/calculations.rb, line 97
def end_of_quarter
  last_quarter_month = [3, 6, 9, 12].detect { |m| m >= month }
  beginning_of_month.change(:month => last_quarter_month).end_of_month
end

Возвращает новую дату/время в конце квартала. Пример: 31 марта, 30 июня, 30 сентября. Объекты DateTime будут иметь время, установленное на 23:59:59.

Также алиас: at_end_of_quarter
end_of_week(start_day = Date.beginning_of_week) Показать исходный код
# File activesupport/lib/active_support/core_ext/date_and_time/calculations.rb, line 201
def end_of_week(start_day = Date.beginning_of_week)
  last_hour(days_since(6 - days_to_week_start(start_day)))
end

Возвращает новую дату/время, представляющую конец этой недели в заданный день. Неделя предполагается начинающейся в start_day, по умолчанию Date.beginning_of_week или config.beginning_of_week при установке. Объекты DateTime имеют время, установленное на 23:59:59.

Также алиас: at_end_of_week
end_of_year() Показать исходный код
# File activesupport/lib/active_support/core_ext/date_and_time/calculations.rb, line 222
def end_of_year
  change(:month => 12).end_of_month
end

Возвращает новую дату/время, представляющую конец года. Объекты DateTime будут иметь время, установленное на 23:59:59.

Также алиас: at_end_of_year
END_OF_DOCUMENT_MARKER
future?() Show source
# File activesupport/lib/active_support/core_ext/date_and_time/calculations.rb, line 34
def future?
  self > self.class.current
end

Возвращает true, если дата/время находятся в будущем.

last_month()
Alias for: prev_month
last_quarter()
Alias for: prev_quarter
last_week(start_day = Date.beginning_of_week)
Alias for: prev_week
last_year()
Alias for: prev_year
monday() Show source
# File activesupport/lib/active_support/core_ext/date_and_time/calculations.rb, line 193
def monday
  beginning_of_week(:monday)
end

Возвращает понедельник этой недели, предполагая, что неделя начинается с понедельника. DateTime объекты имеют время, установленное на 0:00.

months_ago(months) Show source
# File activesupport/lib/active_support/core_ext/date_and_time/calculations.rb, line 59
def months_ago(months)
  advance(:months => -months)
end

Возвращает новую дату/время, на указанное количество месяцев назад.

months_since(months) Show source
# File activesupport/lib/active_support/core_ext/date_and_time/calculations.rb, line 64
def months_since(months)
  advance(:months => months)
end

Возвращает новую дату/время, на указанное количество месяцев в будущем.

next_month() Show source
# File activesupport/lib/active_support/core_ext/date_and_time/calculations.rb, line 131
def next_month
  months_since(1)
end

Сокращенная запись для #months_since(1).

next_quarter() Show source
# File activesupport/lib/active_support/core_ext/date_and_time/calculations.rb, line 136
def next_quarter
  months_since(3)
end

Сокращенная запись для #months_since(3)

next_week(given_day_in_next_week = Date.beginning_of_week) Show source
# File activesupport/lib/active_support/core_ext/date_and_time/calculations.rb, line 126
def next_week(given_day_in_next_week = Date.beginning_of_week)
  first_hour(weeks_since(1).beginning_of_week.days_since(days_span(given_day_in_next_week)))
end

Возвращает новую дату/время, представляющую заданный день на следующей неделе.

today = Date.today # => Thu, 07 May 2015
today.next_week    # => Mon, 11 May 2015

Параметр given_day_in_next_week по умолчанию равен началу недели, которое определяется Date.beginning_of_week или config.beginning_of_week

today = Date.today       # => Thu, 07 May 2015
today.next_week(:friday) # => Fri, 15 May 2015

при установке. DateTime объекты имеют время, установленное на 0:00.

now = Time.current # => Thu, 07 May 2015 13:31:16 UTC +00:00
now.next_week      # => Mon, 11 May 2015 00:00:00 UTC +00:00
next_year() Show source
# File activesupport/lib/active_support/core_ext/date_and_time/calculations.rb, line 141
def next_year
  years_since(1)
end

Сокращенная запись для #years_since(1).

past?() Show source
# File activesupport/lib/active_support/core_ext/date_and_time/calculations.rb, line 29
def past?
  self < self.class.current
end

Возвращает true, если дата/время находятся в прошлом.

prev_month() Show source
# File activesupport/lib/active_support/core_ext/date_and_time/calculations.rb, line 155
def prev_month
  months_ago(1)
end

Сокращенная запись для #months_ago(1).

Также является псевдонимом для: last_month
prev_quarter() Show source
# File activesupport/lib/active_support/core_ext/date_and_time/calculations.rb, line 161
def prev_quarter
  months_ago(3)
end

Сокращенная запись для #months_ago(3).

Также является псевдонимом для: last_quarter
prev_week(start_day = Date.beginning_of_week) Show source
# File activesupport/lib/active_support/core_ext/date_and_time/calculations.rb, line 149
def prev_week(start_day = Date.beginning_of_week)
  first_hour(weeks_ago(1).beginning_of_week.days_since(days_span(start_day)))
end

Возвращает новую дату/время, представляющую заданный день на предыдущей неделе. Предполагается, что неделя начинается с start_day, по умолчанию Date.beginning_of_week или config.beginning_of_week при установке. DateTime объекты имеют время, установленное на 0:00.

Также является псевдонимом для: last_week
prev_year() Show source
# File activesupport/lib/active_support/core_ext/date_and_time/calculations.rb, line 167
def prev_year
  years_ago(1)
end

Сокращенная запись для #years_ago(1).

Также является псевдонимом для: last_year
sunday() Show source
# File activesupport/lib/active_support/core_ext/date_and_time/calculations.rb, line 208
def sunday
  end_of_week(:monday)
end

Возвращает воскресенье этой недели, предполагая, что неделя начинается с понедельника. DateTime объекты имеют время, установленное на 23:59:59.

today?() Show source
# File activesupport/lib/active_support/core_ext/date_and_time/calculations.rb, line 24
def today?
  to_date == ::Date.current
end

Возвращает true, если дата/время сегодня.

tomorrow() Show source
# File activesupport/lib/active_support/core_ext/date_and_time/calculations.rb, line 19
def tomorrow
  advance(:days => 1)
end

Возвращает новую дату/время, представляющую завтра.

weeks_ago(weeks) Show source
# File activesupport/lib/active_support/core_ext/date_and_time/calculations.rb, line 49
def weeks_ago(weeks)
  advance(:weeks => -weeks)
end

Возвращает новую дату/время, на указанное количество недель назад.

weeks_since(weeks) Show source
# File activesupport/lib/active_support/core_ext/date_and_time/calculations.rb, line 54
def weeks_since(weeks)
  advance(:weeks => weeks)
end

Возвращает новую дату/время, на указанное количество недель в будущем.

years_ago(years) Show source
# File activesupport/lib/active_support/core_ext/date_and_time/calculations.rb, line 69
def years_ago(years)
  advance(:years => -years)
end

Возвращает новую дату/время, на указанное количество лет назад.

years_since(years) Show source
# File activesupport/lib/active_support/core_ext/date_and_time/calculations.rb, line 74
def years_since(years)
  advance(:years => years)
end

Возвращает новую дату/время, на указанное количество лет в будущем.

yesterday() Show source
# File activesupport/lib/active_support/core_ext/date_and_time/calculations.rb, line 14
def yesterday
  advance(:days => -1)
end

Возвращает новую дату/время, представляющую вчера.

© 2004–2018 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API