Quantcast
Channel: hachi8833の記事一覧|TechRacho by BPS株式会社
Viewing all articles
Browse latest Browse all 1759

Ruby: strftimeでよく使うテンプレート

$
0
0

更新情報

  • 2016/10/06: 初版公開
  • 2022/07/19: 更新

なお、以下のWebサービスを使うと、シンプルなstrftime書式についてブラウザ上で確認できますので、参考までにどうぞ(週刊Railsウォッチ20220726)。

こんにちは、hachi8833です。つい先ほどTechRachoをSSL暗号化いたしました。

query

160914_1648_wKvt8f

関係ありませんが、スクショ撮影中にSlackの時間表示方法を切り替えました。

以下、よく使いそうなオプションを集めてみましたのでスニペットにでもどうぞ。strptimeはまた今度。

注意: コード中で時間取得に使っているTime.nowはすべてRuby 3.1.0の場合です。
また、RailsではTime.nowではなく、Time.zone.nowTime.currentを使う必要があるのでご注意ください。

strftime

Time#strftimeは、Timeオブジェクトの表示形式を指定して文字列に変換します。TimeはRubyの組み込みオブジェクトです。個別のパラメータについては公式ドキュメントのTime#strftimeをご覧ください。

⚓「2022年07月19日 18:34:59」にしたいとき

以下は、time = Time.nowを実行している前提です。

  • time.strftime("%Y年%m月%d日 %H:%M:%S")
>> time = Time.now
>> time.strftime("%Y年%m月%d日 %H:%M:%S")
#=> "2022年07月19日 18:34:59"

⚓「22-07-19」にしたいとき

  • time.strftime("%y-%m-%d")
>> time.strftime("%y-%m-%d")
#=> "22-07-19"

⚓「06:34 PM」にしたいとき

  • time.strftime("%I:%M %p")
>> time.strftime("%I:%M %p")
=> "06:34 PM"

⚓「2022/07/19(火)」にしたいとき

以下はRailsのI18nを使わない方法で曜日を表示しています。タイムゾーンなどを正しく扱うには「Railsでの、日本語対応の短縮曜日の表示」などを参考にI18nをお使いください。

# 前処理
wd = ["日", "月", "火", "水", "木", "金", "土"]
time = Time.now
  • time.strftime("%Y/%m/%d(#{wd[time.wday]})")
>> time.strftime("%Y/%m/%d(#{wd[time.wday]})")
#=> "2022/07/19(火)"

参考: 日本語曜日入り日付フォーマットを1行で書く

⚓「午後 06:40」にしたいとき

RubyのTimeクラスに午前/午後を取得するメソッドがないので、以下の方法で「午前」「午後」を表示してみました。

# 前処理
time = Time.now
ampm = time.hour < 12 ? "午前" : "午後"
  • time.strftime("#{ampm} %I:%M")
>> time.strftime("#{ampm} %I:%M")
#=> "午後 06:40"

なお、昼の12時が午前なのか午後なのかについては、Yahoo!知恵袋などに議論がありました。

参考: Ruby: how to get at meridian in Time objects?

関連記事

[Ruby/Rails] strptimeのよく使うテンプレート

ActiveRecordで日付・時刻の範囲検索をシンプルに書く方法

The post Ruby: strftimeでよく使うテンプレート first appeared on TechRacho.


Viewing all articles
Browse latest Browse all 1759

Trending Articles