Ruby クックブック

レシピ1.8 夏時間のチェック

問題 現在のロケールの時刻が夏時間かどうかを知りたい。 解決 Timeオブジェクトを生成し、そのisdstメソッドをチェックする。 Time.local(2006,1,1) # => Sun Jan 01 00:00:00 EST 2006 Time.local(2006,1,1).isdst # => false Time.local(2006,10,1) # => …

レシピ1.5 日付の反復

指定された時点から別の時点を割り出したい。 解決 Rubyのタイムオブジェクトはすべて、数値のように範囲内で使用できる。DateオブジェクトとDateTimeオブジェクトは1日のインクリメントで反復し、Timeオブジェクトは1秒のインクリメントで反復する。 requ…

レシピ1.3 日付の出力

問題 日付オブジェクトを文字列として出力したい 解決 日付を確認したいだけであれば、Time#to_sまたはDate#to_sを呼び出せば、フォーマットで面倒な思いをせずにすむ。 require 'date' Time.now.to_s # => "Sat Mar 18 19:05:50 EST 2006" DateTime.now.to_…

レシピ1.7 タイムゾーンの変換

問題 タイムオブジェクトを変更して、他のタイムゾーンで同じ瞬間を表したい。 解決 最も一般的なタイムゾーン変換は、ローカルタイムからUCTへの変換とUTCからローカルタイムへの変換である。これらの変換はTimeでもDateTimeでも簡単に行える。 Time#gmtime…

レシピ1.5 日付の演算

問題 2つの日付の時間差を割り出したい。または、日付に数値を足して、過去または未来の日付を割り出したい。 Timeオブジェクトと数値の加算または減算を行うと、その秒数が足されるか引かれることになる。 require 'date' y2k = Time.gm(2000, 1, 1) # => …

レシピ1.2 日付けの正確な解析とファジィ解析

問題 日付けまたは日時を表す文字列をDateオブジェクトに変換したい。ただし、文字列のフォーマットは事前に分からない可能性がある。 解決 日付けを表す文字列(日付文字列)をDate.parseまたはDateTime.parseに渡すのが最も効果的である。これらのメソッド…

レシピ1.1 今日の日付けの割り出し

問題 現在の日付けと時刻、または未来または過去の時間を表すオブジェクトを生成する必要がある。 解決 ファクトリメソッドTime.nowは、現在のローカルタイムを保持するTimeオブジェクトを生成する。必要であれば、Time#gmtimeを呼び出して、そのオブジェク…

日付けと時間3

DateTimeオブジェクトは、宇宙が誕生するずっと以前、あるいは宇宙の推定寿命よりもはるかに先の時間を正確に表すことが出来る。DateTimeで歴史上の日付けを処理する際には、過去500年にわたって西洋に吹き荒れた暦改正運動を考慮する必要がある。Dateオブジ…

Time2

不格好なメソッド名やメンバ名はさておき、Timeクラスの最大の欠点は、32ビットシステムの基本実装では1901年12月よりも前の日付けや2037年1月以降の日付けを処理できないことである。 Time.local(1865, 4, 9) # ArgumentError: time out of range Time.loca…

日付けと時間

#Time.nowで現在のローカルタイム(現地時間)を取得することができ、 #Time.atでエポックからの経過秒数をもとにTimeオブジェクトを生成することが出来る。 Time.now # => Sat Mar 18 14:49:30 EST 2006 Time.at(0) # => Wed Dec 31 19:00:00 EST 1969 #こ…