時間・日付の扱い
今の時間・日付をとる
time = Time.now p time #=> Tue Oct 10 18:12:34 +0900 2006 p time.year #> 2006 p time.month #> 10 p time.day #> 10 p time.wday #> 2 p time.yday #> 283 p time.hour #> 18 p time.min #> 12 p time.sec #> 34 p time.zone #> GMT+9:00
- wday
- 0(日曜日)から6(土曜日)
- yday
- 1月1日を1とした通算日
- zone
- タイムゾーンをあらわす文字列
文字列からTimeを作成する
require 'parsedate' require 'time' Time.parse("16:30") Time.parse("10/11") Time.parse("2006/10")
時間の差を求める
start = Time.now finish = Time.now p finish - start #=> 1.000
時間の加減をする
time = Time.now #=> Tue Oct 10 18:12:34 +0900 2006 time + 1 #=> Tue Oct 10 18:12:35 +0900 2006 time + 60*60*24 #=> Tue Oct 11 18:12:34 +0900 2006
文字列に変換する
time = Time.now p time.strftime("%Y %B %d(%a)") #=> 2006 October 10(Tue)
%A | 曜日の名称(Sunday, Monday ... ) |
%a | 曜日の省略名(Sun, Mon ... ) |
%B | 月の名称(January, February ... ) |
%b | 月の省略名(Jan, Feb ... ) |
%c | 日付と時刻 |
%d | 日(01-31) |
%H | 24時間制の時(00-23) |
%I | 12時間制の時(01-12) |
%j | 年中の通算日(001-366) |
%M | 分(00-59) |
%m | 月を表す数字(01-12) |
%p | 午前または午後(AM,PM) |
%S | 秒(00-60) (60はうるう秒) |
%U | 週を表す数。最初の日曜日が第1週の始まり(00-53) |
%W | 週を表す数。最初の月曜日が第1週の始まり(00-53) |
%w | 曜日を表す数。日曜日が0(0-6) |
%X | 時刻 |
%x | 日付 |
%Y | 西暦を表す数 |
%y | 西暦の下2桁(00-99) |
%Z | タイムゾーン trap |
%% | %自身 |
現在の日付を求める
require 'date' Date.today #=>
文字列からDateを作成する
require 'date' day = Date.parse("2000-8-10") p day.to_s #=> 2006-10-10
その他にも以下のようなパターンが使える
Sat Saturday 1999-08-28 21:45:09 09:45:09 PM 1999-08-28T21:45:09+0900 19990828 214509 H11.08.28T21:45:09Z Sat Aug 28 21:45:09 1999 Sat Aug 28 21:45:09 JST 1999 Sat, 28 Aug 1999 21:45:09 -0400 Saturday, 28-Aug-99 21:45:09 GMT 08/28/1999 1999/08/28
n月前/n月後/n日前/n日後を求める
require 'date' # 現在 Date.today.to_s #=> 2006-10-10 # 6ヶ月前 (Date.today << 6).to_s #=> 2006-4-10 # 6ヶ月後 (Date.today >> 6).to_s #=> 2007-4-10 # 15日前 (Date.today - 15).to_s #=> 2006-9-25 # 15日後 (Date.today + 15).to_s #=> 2006-10-25
翌日を求める
require 'date' Date.today.to_s #=> 2006-10-10 Date.today.next.to_s #=> 2006-10-11