4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Ruby】strftimeメソッドでよく使われるフォーマット文字列まとめ

Posted at

はじめに

最近Rubyで時間や日付関連をいじくっていて、何回もこのメソッドが出てきています。

しかし、どうも覚えられない。毎回ググる。
リファレンスマニュアルは全部書かれすぎて探すのに時間がかかる。面倒!:sweat_smile:

ということで、よく使うフォーマットに絞ってまとめることにしました。

この記事が役に立つ方

  • 日付や時間を活用するシーンに遭遇した
  • Ruby初心者

この記事のメリット

  • strftimeメソッドで好きなフォーマットを指定出来るようになる:thumbsup_tone2:

環境

  • 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"

↑この用法って日本向きじゃないですよね。直感的に「あ、なるほどね!」ってならない、わかりにくい・・・。:sweat:

よく使われる用法

個人的にこれだけあれば間に合うと考えているものを列挙していきます。

【前提】

以下のようにして変数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をどう音読されてますか?
「えすてぃーあーるえふたいむ」?:sweat_smile:

音読できなくてsrtftimeとかstfrtimeとかタイポ多発します。
パッと見間違いに気づけません。笑

意味的にはstr + f + timeですかね。

参考にさせて頂いたサイト(いつもありがとうございます)

instance method Time#strftime (Ruby 2.6.0)

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?