👻
Rails日付のフォーマットを定義する方法
概要
Railsで、日付、時刻の書式指定をして文字列に変換するメソッドを紹介します。
strftime
メソッドが使えるみたいです。
実際のコード
店舗でチケットを発行して購入する前提で書いたview部分です。
<div class="c-block-customer__wrap">
<div class="u-mbs is-xs-harf">
<h2 class="c-heading is-sm u-text-left">チケット保有枚数</h2>
</div>
<div class="js-overflow-table">
<table class="c-table-plan">
<thead>
<tr>
<th class="u-text-left">店舗名</th>
<td>チケット購入日</td>
<td>残チケット数</td>
</tr>
</thead>
<tbody>
<% @ticket_number_per_store.each do |s| %>
<tr>
<th><%= s[:store_name] %></th>
<td><%= s[:purchase_date].strftime("%Y/%m/%d") %></td>
<td><%= s[:total_tickets] %></td>
</tr>
<% end %>
</tbody>
</table>
</div>
</div>
上のコードでは、strftime
を使用しています。
<td><%= s[:purchase_date].strftime("%Y/%m/%d") %></td>
これは西暦、月、日付を指定
しています。
ex) s[:purchase_date]が2024-08-04の日付オブジェクトの時、
<td>2024/08/04</td>というHTMLが生成
よく使う書式
参考資料にまとめてありました。
よく使う書式
(※日時は2018年1月2日 3時4分5秒 567ミリ秒を想定)(※△=スペース)
書式 | 簡単な説明 | 記述例 | 出力例 |
---|---|---|---|
%Y | 西暦 | 日時データ.strftime("%Y") |
2018 |
%y | 西暦(下2桁) | 日時データ.strftime("%y") |
18 |
%m | 月(2桁) | 日時データ.strftime("%m") |
01 |
%d | 日(2桁) | 日時データ.strftime("%d") |
02 |
%-d | 日(1~2桁) | 日時データ.strftime("%-d") |
2 |
%e | 日(空白埋め2桁) | 日時データ.strftime("%e") |
2 |
%H | 時(2桁)24時間制 | 日時データ.strftime("%H") |
03 |
%-H | 時(1~2桁)24時間制 | 日時データ.strftime("%-H") |
3 |
%k | 時(空白埋め2桁)24時間制 | 日時データ.strftime("%k") |
3 |
%l | 時(1~2桁)12時間制 | 日時データ.strftime("%l") |
3 |
%M | 分(2桁) | 日時データ.strftime("%M") |
04 |
%-M | 分(1~2桁) | 日時データ.strftime("%-M") |
4 |
%S | 秒(2桁) | 日時データ.strftime("%S") |
05 |
%-S | 秒(1~2桁) | 日時データ.strftime("%-S") |
5 |
%L | ミリ秒 | 日時データ.strftime("%L") |
567 |
%F | 日付 | 日時データ.strftime("%F") |
2018-01-02 |
%T | 時刻(時分秒)24時間制 | 日時データ.strftime("%T") |
03:04:05 |
%R | 時刻(時分)24時間制 | 日時データ.strftime("%R") |
03:04 |
%r | 時刻(時分秒)12時間制と午前または午後 | 日時データ.strftime("%r") |
03:04:05 AM |
%P | 午前または午後(小文字) | 日時データ.strftime("%P") |
am |
%p | 午前または午後(大文字) | 日時データ.strftime("%p") |
AM |
より詳しい資料
以下の資料でもっと詳しい説明があるのでよかったらご覧ください。
その他の資料
Discussion