Kintarou'sBlog

プログラミング学習中。学習内容のアウトプットや読書で学んだことなど随時投稿!

【Ruby】日付や時刻を書式指定して表示するstrftimeメソッド

こんにちは😊Kintarouです。

現在エンジニア転職を目指してTECH CAMPにてプログラミング学習中です👨‍🎓
夢はフリーランスエンジニアになって働く人が働きやすいシステムを作ること!
と、愛する妻と海外移住すること🗽

プログラミングや読んでいる本のことなど、ブログに書いていきます!
twitter : https://twitter.com/ryosuke_angry


本日はTimeクラスのstrftimeメソッドについてまとめます!

本日参考にさせて頂いたサイト🙇‍♂️

Rubyで日付・時刻を扱うならTimeクラスに決まり! | 侍エンジニア塾ブログ(Samurai Blog) - プログラミング入門者向けサイト 【Ruby入門】strftimeで日付・時刻を書式指定して文字列に変換する | 侍エンジニア塾ブログ(Samurai Blog) - プログラミング入門者向けサイト


日付を扱うクラス

日付を扱うクラスには3種類
- Dateクラス
- DateTimeクラス
- Timeクラス
があります。
違いとしては以下、簡潔に説明しています。

Dateクラス

日付を扱うクラスで、時刻は扱えません。
require”date”で呼び込む必要があります。

DateTimeクラス

日付と時間を扱うクラスです。
こちらもrequire”date”で呼び込む必要があります。

Timeクラス

DateTimeと同じく、日付と時刻を扱うクラスです。
こちらはrequireをする必要がありません。
また、こちらはサマータイムうるう秒が扱えます。

どれを使えば良いの?

特に理由がなければTimeクラスでいいとのことです。

strftimeメソッド

さて、それではstrftimeメソッドですが、こちらは日付や日時のデータを編集して文字列に変換するためのメソッドです。

日時.strftime(書式の文字列)

で表記し、

time = Time.now

p time
p time.strftime("%Y年%-m月%-d日 %-H時%-M分%-S秒")

#=>2020-01-02 03:04:05 +0900
#=>"2020年1月2日 3時4分5秒"

と出力されます。

書式一覧

よく使う書式 (※日時は2020年1月2日 3時4分5秒 567ミリ秒を想定)(※△=スペース)

書式 簡単な説明 記述例 出力例
%Y 西暦 日時データ.strftime("%Y") 2020
%y 西暦(下2桁) 日時データ.strftime("%y") 20
%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

まとめ

文字列に変換してくれるというところが面白いですね!
文字列に使えるメソッドや正規表現を組み合わせることで更に自由度が上がるのではないかと思います。

以上、どなたかの参考になれば幸いです😊