Ruby 日付関連処理

2018年6月20日水曜日

Ruby 日付処理

t f B! P L
Ruby 日付関連処理

Ruby 日付関連処理

日付の作成

 # 年月日を指定し、日付を作成
 d2 = Date.new(2017, 4, 30);
 # 本日日付を取得
 d3 = Date.today

月末日を求める

 day = Date.new(2020, 2 , -1)
  # => #<Date: 2020-02-29 ((2458909j,0s,0n),+0s,2299161j)>

point: newの第3引数に負の値をわたすと末日から数える。-1が末日になる。

文字列 から 日付へ変換

Date.strptime( str, format)

サンプルコード

    require 'date'
    begin
  Date.strptime('2017-09-03', '%Y-%m-%d')
 rescue ArgumentError
  p "不正な日付文字列"
 end

[引数]

str:変換対象の日付文字列
format:日付フォーマット

[例外]

ArgumentError:正しくない日付になる組み合わせである場合に発生します。

日付 から 文字列へ変換

val.strftime( format)

サンプルコード

    require 'date'
    val = DateTime.now
 val.strftime('%Y-%m-%d')

[引数]

format:日付フォーマット

日付フォーマット (format)

フォーマット 出力形式
%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 タイムゾーン
%% %自身

日付の加減算

日の加減算

require "date"
 d = Date.today
 # 1日後
 afterDay = d + 1
 # 5日前
 beforeDay = d - 5

月の加減算

require "date"
 d = Date.today
 beforeMonth = d << 1
 afterMonth = d >> 5

日付の差を求める

require "date"

 d1 = Date.today
 d2 = Date.new(2017, 3 ,15)
 sa = d1 - d2 #差は日の単位で取れる
 p "日付の差は#{sa.to_i}日です"

日付の比較

require "date"

 d1 = Date.new(2018, 3 ,15)
 d2 = Date.new(2017, 3 ,15)
 p "d1が大きい" if d1 > d2 
スポンサーリンク

QooQ