【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 |
まとめ
文字列に変換してくれるというところが面白いですね!
文字列に使えるメソッドや正規表現を組み合わせることで更に自由度が上がるのではないかと思います。
以上、どなたかの参考になれば幸いです😊