6

ruby でISO 8601標準のすべての日付、時刻、期間、および間隔の使用の実装は既にありますか? 年、月、日、day_of_the_week、week、hour、minutes、is_duration?、has_recurrence? などの詳細を設定および取得できる Class のようなものを意味します。など、文字列に設定してエクスポートすることもできますか?

4

2 に答える 2

3
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の組み込みの日時関数は(たとえば.NETと比較して)よく考えられていないようです。そのため、他の機能にはいくつかのgemを使用する必要があります。

これらのgemを使用すると、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

時間計算を手元に置いておきます。

于 2010-11-16T03:30:42.553 に答える
2

Ruby Time ライブラリは、Time クラスに iso8601 メソッドを追加します。こちらをご覧ください。

他の ISO 8601 形式をエクスポートする gem を知りません。Time クラスを自分で拡張して追加できます。

多くの場合、strftimeメソッドを使用して特定の形式を出力します。例。

于 2010-11-16T04:29:06.733 に答える