はじめに
最近Rubyで時間や日付関連をいじくっていて、何回もこのメソッドが出てきています。
しかし、どうも覚えられない。毎回ググる。
リファレンスマニュアルは全部書かれすぎて探すのに時間がかかる。面倒!
ということで、よく使うフォーマットに絞ってまとめることにしました。
この記事が役に立つ方
- 日付や時間を活用するシーンに遭遇した
- Ruby初心者
この記事のメリット
-
strftime
メソッドで好きなフォーマットを指定出来るようになる
環境
- Ruby 2.6.3
strftime
メソッドとは
TimeクラスのDate型やDatetime型オブジェクトに使用可能なメソッド。
String(文字列)が返される。
Rubyで時間や日付を扱うのなら頻出。
↓Rubyリファレンスマニュアルはこちら。
instance method Time#strftime (Ruby 2.6.0)
以下、公式サイトの例を引用させて頂きます。
t = Time.now #=> 2010-09-05 15:41:17 0900
t.strftime(“Printed on %m/%d/%Y") #=> “Printed on 09/05/2010”
t.strftime(“Printed on %m/%-d/%_6Y”) #=> “Printed on 09/5/ 2010”
t.strftime(“at %I:%M%p”) #=> “at 03:41PM"
t.strftime("at %I:%M%#p") #=> "at 03:41pm"
↑この用法って日本向きじゃないですよね。直感的に「あ、なるほどね!」ってならない、わかりにくい・・・。
よく使われる用法
個人的にこれだけあれば間に合うと考えているものを列挙していきます。
【前提】
以下のようにして変数t
を定義します。
変数t
には現在時刻が入っています。
ここから、欲しいところを抽出するためにどうするか確認していきましょう。
t = Time.now
=> 2019-11-10 22:59:06 +0900
【年月日が欲しい】
%Y/%m/%d
日本的な表示。
t.strftime('%Y/%m/%d')
=> "2019/11/10"
%D
=%x
アメリカンな表示。
t.strftime('%D')
=> "11/10/19"
t.strftime('%x')
=> "11/10/19"
【時分秒が欲しい】
%H:%M:%S
= %T
=%X
どれを使っても同じ。
個人的には%T
が覚えやすくて好きです。
t.strftime('%H:%M:%S')
=> "22:59:06"
t.strftime('%T')
=> "22:59:06"
t.strftime('%X')
=> "22:59:06"
【コンマ2桁まで秒数が欲しい】
%H:%M:%S:%2N
= %T:%2N
=%X:%2N
ストップウォッチなどはこれが多いですね。
%H
(時間)を除いて使うことも多そうです。
t.strftime('%H:%M:%S:%2N')
=> "22:59:06:55"
t.strftime('%T:%2N')
=> "22:59:06:55"
t.strftime('%X:%2N')
=> "22:59:06:55"
【週を表す数(日曜始まり)】
%U
一年間のうち、何週目かを確認。
t.strftime('%U')
=> "45"
【週を表す数(月曜始まり)】
%W
月曜始まりで週をカウントするならこちら。
日曜日に試したので、こちらのほうが1つ少なくなりました。
t.strftime('%W')
=> "44"
おわりに
ちなみに、皆さんはstrftime
をどう音読されてますか?
「えすてぃーあーるえふたいむ」?
音読できなくてsrtftime
とかstfrtime
とかタイポ多発します。
パッと見間違いに気づけません。笑
意味的にはstr
+ f
+ time
ですかね。