1. ホーム
  2. スクリプト・コラム
  3. ルビートピックス

RubyのTimeオブジェクトの共通機能まとめ

2022-01-31 13:59:58

時刻オブジェクトです。Time.nowは現在の時刻を返します。

1. time.at

Time.at(time[, usec])

timeが参照している時刻のTimeオブジェクトを返します。timeはTimeオブジェクトか、開始時刻からの秒数を表す整数または浮動小数点数です。

浮動小数点の精度が十分でない場合、usecを使用することができます。これは,time + (usec/1000000)で表される時間を返します。この場合,timeとusecは共に整数でなければならない。

出来上がったTimeオブジェクトは、ローカルタイムのタイムゾーンを使用します。

2. 時刻.gm、時刻.utc

Time.gm(year[, mon[, day[, hour[, min[, sec[, usec]]]]]])

Time.gm(sec, min,hour, mday, mon, year, wday, yday, isdst, zone)

Time.utc(year[, mon[, day[, hour[, min[, sec[, usec]]]]]])

Time.utc(sec,min, hour, mday, mon, year, wday, yday, isdst, zone)



パラメータで指定されたUTC時間オブジェクトを返す。最初のパラメータの後に、すべてのオプションのパラメータが続く。これらのパラメータが省略された場合、最も小さい値が使用されます。

これらのパラメータは文字列も扱うことができる。

p Time.gm *"2002-03-17".split("-")[v1] # => Sun Mar 17 00:00:00UTC 2002



に相当します。

p Time.gm(*"2002-03-17".split("-"))


時刻は、railsの文字列からparseで直接変換できます。

p Time.parse("2002-03-17") #=> Sun Mar 17 00:00:00 +0800[v2] 2002



3. time.local、time.mktime

Time.local(year[, mon[, day[, hour[, min[, sec[,usec]]]]]])

Time.local(sec, min, hour, mday, mon, year,wday, yday, isdst, zone)

Time.mktime(year[, mon[, day[, hour[, min[, sec[,usec]]]]]])

Time.mktime(sec, min, hour, mday, mon,year, wday, yday, isdst, zone)



パラメータで指定された場所の時刻のTimeオブジェクトを返します。

4. time.new、time.now

現在の時刻を返すTimeオブジェクトです。newとnowの違いは、initializeを呼び出している点です。

5. 時間.回

Time.times((<obsolete>))



自プロセスおよび子プロセスが消費したユーザー/システムの CPU 時間を Struct::Tms として返します。Struct::Tmsは構造体クラスで、以下のメンバを持ちます。

utime # user time

stime # system time

cutime # user time ofchildren

cstime # system timeofchildren



時間は浮動小数点数で秒単位で表されます。

6.自己+他

selfの次の秒のもう一方の時刻を返します。

7.自己-他

otherがTimeオブジェクトの場合、両者の差をFloatで秒単位で返します。otherが値の場合、selfの前の時間otherの秒数を返します。

8.自己 <=>その他

時間の比較 . その他はTimeオブジェクトか数値でなければならない。数値の場合は、時刻を計算して比較してからの経過秒数として扱われます。

9. asctime, ctime

時刻をasctime形式の文字列に変更します。ただし、末尾の "unus "を除きます。

10, GMT?, utc?

selfのタイムゾーンが協定世界時である場合、trueを返します。

11. getgm、getutc

タイムゾーンをUTCに設定したTimeオブジェクトを新規に生成して返します。

12. getlocal

タイムゾーンをローカルタイムに設定した新しいTimeオブジェクトを生成して返します。

13. gmtime, utc

タイムゾーンを協定世界時(CU)に設定します。selfを返す。

このメソッドを呼び出した後、時刻の変更は協定世界時で処理されます。UTCを表示させたい場合は、そのようにします。

14. ローカルタイム

タイムゾーンをローカルタイムに設定します(デフォルト)。selfを返します。

このメソッドを呼び出した後、時刻の変更はローカルタイムと協調して処理されます。

時刻の書式設定方法。
a 曜日名の略称(例:Sun)。
A 曜日の正式名称です(例:日曜日)。
b 月名の略称(例:Jan)。
B 月名のフルネーム(例:1月)。

%c ローカルな日付と時刻の表現を優先します。
d 月の初日(01~31)です。
H その日の最初の時間。24時間形式(00~23)。
I その日の最初の時間。12時間形式(01~12)。
j 年月日(001から366まで)です。
m その年の最初の月(01から12)です。
M 時の最初の数分(00 から 59)です。
p 子午線表示(AMまたはPM)。
S 分の秒数(00 または 60)。
U 最初の日曜日(第1週の初日として)から始まる、現在の年の週数(00から53)。
W 第1月曜日(第1週の初日)から始まる、現在の年の週数(00から53)。
w 1週間の日数(日曜日は0、0〜6)です。
x 時刻を伴わない日付のみの表現が望ましい。
X 日付がなく時間だけが表示されることを好む。
y 世紀を含まない年表示(00~99)。
Y センチュリー付きの年です。
Z タイムゾーンの名称
使用方法

Time.now.strftime("%Y-%m-%d %H:%M:%S")
=> 2015-09-24 22:20:26


いくつかの頻繁に使用されるか、または覚えて非常に良い、他の使用はもちろん、行を調べるために、最高のものを覚えて、私はすべてを覚えていないことができます。

追記:Timeオブジェクトを使って、様々な日付と時間のコンポーネントを取得することができます。

以下の例をご覧ください。

time = Time.new


 puts time.year => 日付の年を指定します。
 puts time.month => 日付の月(1~12)を指定します。
 puts time.day => 月の初日(1~31日)。
 puts time.day => 曜日(0は日曜日)を指定します。
 puts time.yday => 365: 1年のうちの1日
 puts time.hour => 23: 24時間制の場合
 puts time.min => 59
 puts time.sec => 59
 puts time.usec => 999999: マイクロ秒
 puts time.zone => "UTC":タイムゾーン名

時間アルゴリズム

now = Time.now # Current time
past = now - 10 # 10 seconds ago. time - number => Time
future = now + 10 # 10 seconds from now. time + number => Time
diff = future - now # => 10 Time - Time => Seconds


上記はrubyの時間アルゴリズムです。
railsでは今でも下記をずっと使っています。

now = Time.now
past1 = now - 10.day
past2 = now - 10.month
past3 = now - 10.year


これらは、やはり非常に便利なメソッドで、数字+. 時間を表現するメソッドで、10.dayは実際には10×24×60×60秒に変換されます。railsはこれらのメソッドに対応するクラスを提供しています。