Spec-Zone.ru › Ruby on Rails 5.0

класс ActiveSupport::Duration

Родитель:
Объект

Обеспечивает точные измерения дат и времени с помощью Date#advance и Time#advance соответственно. В основном поддерживает методы для Числовых значений.

1.month.ago       # equivalent to Time.now.advance(months: -1)

Константы

PARTS_IN_SECONDS
СЕКУНДЫ_В_СУТКИ
СЕКУНДЫ_В_ЧАС
СЕКУНДЫ_В_МИНУТУ
СЕКУНДЫ_В_МЕСЯЦ
СЕКУНДЫ_В_НЕДЕЛЮ
СЕКУНДЫ_В_ГОД

Атрибуты

parts[RW]
value[RW]

Публичные методы класса

parse(iso8601duration) Показать исходный код
# File activesupport/lib/active_support/duration.rb, line 38
def parse(iso8601duration)
  parts = ISO8601Parser.new(iso8601duration).parse!
  new(calculate_total_seconds(parts), parts)
end

Создает новый Duration из строки, отформатированной в соответствии с ISO 8601 Duration.

См. ISO 8601 для получения дополнительной информации. Этот метод позволяет использовать отрицательные части в шаблоне. Если предоставлена недопустимая строка, будет вызвано ActiveSupport::Duration::ISO8601Parser::ParsingError.

Публичные методы экземпляра

+(other) Показать исходный код
# File activesupport/lib/active_support/duration.rb, line 92
def +(other)
  if Duration === other
    Duration.new(value + other.value, @parts + other.parts)
  else
    Duration.new(value + other, @parts + [[:seconds, other]])
  end
end

Добавляет другой Duration или Числовое значение к этому Duration. Числовые значения обрабатываются как секунды.

-(other) Показать исходный код
# File activesupport/lib/active_support/duration.rb, line 102
def -(other)
  self + (-other)
end

Вычитает другой Duration или Числовое значение из этого Duration. Числовые значения обрабатываются как секунды.

==(other) Показать исходный код
# File activesupport/lib/active_support/duration.rb, line 121
def ==(other)
  if Duration === other
    other.value == value
  else
    other == value
  end
end

Возвращает true, если other также является экземпляром Duration с теми же value, или если other == value.

ago(time = ::Time.current) Показать исходный код
# File activesupport/lib/active_support/duration.rb, line 180
def ago(time = ::Time.current)
  sum(-1, time)
end

Вычисляет новую Time или Date, которая находится в прошлом на период времени, который представляет этот Duration.

Также алиас: until
eql?(other) Показать исходный код
# File activesupport/lib/active_support/duration.rb, line 163
def eql?(other)
  Duration === other && other.value.eql?(value)
end

Возвращает true, если other также является экземпляром Duration с теми же частями, что и этот.

from_now(time = ::Time.current)
Псевдоним для: since
hash() Показать исходный код
# File activesupport/lib/active_support/duration.rb, line 167
def hash
  @value.hash
end
iso8601(precision: nil) Показать исходный код
# File activesupport/lib/active_support/duration.rb, line 203
def iso8601(precision: nil)
  ISO8601Serializer.new(self, precision: precision).serialize
end

Генерирует строку ISO 8601 Duration для данного интервала времени. Параметр precision может быть использован для ограничения точности секунд в строке.

since(time = ::Time.current) Показать исходный код
# File activesupport/lib/active_support/duration.rb, line 173
def since(time = ::Time.current)
  sum(1, time)
end

Вычисляет новую Time или Date, которая находится в будущем на период времени, который представляет этот Duration.

Также алиас: from_now
to_i() Показать исходный код
# File activesupport/lib/active_support/duration.rb, line 157
def to_i
  @value.to_i
end

Возвращает количество секунд, представленное этим Duration.

1.minute.to_i   # => 60
1.hour.to_i     # => 3600
1.day.to_i      # => 86400

Обратите внимание, что при этом преобразовании делаются некоторые предположения о продолжительности некоторых периодов, например, месяцы всегда составляют 30 дней, а годы - 365,25 дней:

# equivalent to 30.days.to_i
1.month.to_i    # => 2592000

# equivalent to 365.25.days.to_i
1.year.to_i     # => 31557600

В таких случаях для точного вычисления дат и времени следует использовать базовые классы Ruby Date и Time.

to_s() Показать исходный код
# File activesupport/lib/active_support/duration.rb, line 133
def to_s
  @value.to_s
end

Возвращает количество секунд, покрываемых интервалом времени, в виде строки. Более подробная информация находится в методе #to_i.

1.day.to_s # => "86400"
until(time = ::Time.current)
Псевдоним для: ago

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

Spec-Zone.ru

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