ヘルパーの作成(形式を指定して文字列に変換)
時間計算、給料計算などする際には、時間表示を小数表示に置き換えた方が扱いやすいので、変換ヘルパーを作成する
app/helpers/users_helper.rb
module UsersHelper
# 指定のフォーマットで返します。
def format_basic_info(time)
format("%.2f", ((time.hour * 60) + time.min) / 60.0)
end
end
formatメソッド
formatメソッドは、フォーマットに従って文字列を生成(整形)し、オブジェクトとして返します。フォーマットの基本は%指示子
の形式です。指示子によって与えられたデータをどのように整形するかが決められます。
format(形式、変換したい文字列など)
例えば、
%s は文字列に変えます
%f は浮動小数点数を出力します。
.2f
は値がない場合は.00
、値がある場合はそのまま、小数点第三位以上まである場合は第二位まで表示しそれ以降は切り捨てます。
Dateクラス
今日
Date.today Date.current
組み合わせで表示できるもの
# 月初 (Date.current).beginning_of_month
# 月末 (Date.current).end_of_month
# 今週の最初 (Date.current).beginning_of_week
# 今週の末 (Date.current).end_of_week
# 先週の月曜日 (Date.current).prev_week(:monday)
# 翌週の月曜日 (Date.current).next_week(:monday)
wday メソットと cwday メソット
Date#cwday 暦週の日 (曜日) を返します (1-7、月曜は1)。 Date#wday 曜日を返します (0-6、日曜日は零)。
従って、これを利用して配列を作成します
$days_of_the_week = %w{日 月 火 水 木 金 土}
$days_of_the_week[hoge.wday] で[hoge.wday] が0なら日曜日、1なら月曜日と表示できます
li18nをインストールしている場合の年月日の表示
ja.yml ファイル内を参照すると
formats: default: "%Y/%m/%d" long: "%Y年%m月%d日(%a)" middle: "%Y年%m月" short: "%-m/%-d" time: "%H : %M"
これを使って
<%= l(day, format: :short) %> とすると
時間計算
そもそも、どのような形式で計算するのかで異なる。
今回は、データベースにdatetime形式で時間が保存されているものを取り出して、時間の差を計算する
なので、format メゾットを使って書き換える(形式を指定して文字列に変換)
def working_time(finish, start)
format("%.2f", (((finish - start) / 60) / 60.0)) ← 時間表示にする
end
その他
連続する日などを配列化、範囲オブジェクト化して表記する方法
※範囲オブジェクト化
(@first_day..@last_day)
※配列化
[*@first_day..@last_day]
コメント