Существует ли всеобъемлющая библиотека / модуль для ISO 8601 в ruby? - PullRequest
6 голосов
/ 16 ноября 2010

Существует ли уже реализация всех значений даты, времени, продолжительности и интервала стандарта ISO 8601 в рубине? Я имею в виду что-то вроде класса, в котором вы можете установить и получить такие детали, как, год, месяц, день, день, неделя, час, минуты, is_duration ?, has_recurrence? и так, что также может быть установлено и экспортировано в строку?

Ответы [ 2 ]

3 голосов
/ 16 ноября 2010
require 'time'

time = Time.iso8601 Time.now.iso8601 # iso8601 <--> string
time.year    # => Year of the date 
time.month   # => Month of the date (1 to 12)
time.day     # => Day of the date (1 to 31 )
time.wday    # => 0: Day of week: 0 is Sunday
time.yday    # => 365: Day of year
time.hour    # => 23: 24-hour clock
time.min     # => 59
time.sec     # => 59
time.usec    # => 999999: microseconds
time.zone    # => "UTC": timezone name

Посмотрите на Время .В нем много всего.

К сожалению, встроенные в Ruby функции Date-Time не очень хорошо продуманы (по сравнению, например, с .NET), поэтому для других функций вам придется использоватьнекоторые драгоценные камни.

Хорошо, что использование этих драгоценных камней действительно похоже на встроенную реализацию Ruby.

Наиболее полезными, вероятно, являются Расчеты времени от ActiveSupport (Rails 3).
Вам не нужно требовать рельсы, а только эту небольшую библиотеку: gem install activesupport.

Тогда вы можете сделать :

require 'active_support/all'
Time.now.advance(:hours => 1) - Time.now # ~ 3600
1.hour.from_now - Time.now # ~ 3600 - same as above
Time.now.at_beginning_of_day # ~ 2010-11-24 00:00:00 +1100
# also at_beginning_of_xxx: xx in [day, month, quarter, year, week]
# same applies to at_end_of_xxx

Есть действительно много вещей, которые вы можете сделать, и я верю, что вы найдете то, что соответствует вашим потребностям очень хорошо.

Поэтому вместо того, чтобы приводить здесь абстрактные примеры, я советую вам поэкспериментировать с irb, требующим active_support.

Держите Расчет времени под рукой.

2 голосов
/ 16 ноября 2010

Библиотека Ruby Time добавляет метод iso8601 в класс Time.См. здесь.

Я не знаю камня, который экспортирует другие форматы ISO 8601.Вы можете расширить класс Time самостоятельно, добавив их.

Часто вы будете использовать метод strftime для печати определенных форматов. Пример.

...