Ruby 日付関連処理

2021年11月23日火曜日

Ruby

t f B! P L
日付関連

[adsense]

日付の作成

	# 年月日を指定し、日付を作成
	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:日付フォーマット

[adsense]

日付フォーマット (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 
スポンサーリンク
スポンサーリンク

このブログを検索

Profile

自分の写真
Webアプリエンジニア。 日々新しい技術を追い求めてブログでアウトプットしています。
プロフィール画像は、猫村ゆゆこ様に書いてもらいました。

仕事募集もしていたり、していなかったり。

QooQ