.net column

.NET開発者のためのブログメディア

日付と時刻

strftimeとは?strftimeの使い方をPHP・Python・Rubyの3つの言語で解説!

 

SE
strftimeを使うメリットとはなんでしょう?

PM
時刻を指定のフォーマットに変換できることがメリットして挙げられます。

strftimeとは?


strftimeとは文字列関連の関数の一つで、時刻の時間表記をフォーマットするために使用します。同じ名前の関数がPHP、Python、Rubyにありますが、この記事ではそれぞれについて全て解説します。

まずはPHPのstrftimeです。以下のように使用します。

PHPのstrftime

実行結果は以下のようになります。

2021/02/17 15:07:00
February, 17(Wednesday)

strftime(“%Y/%m/%d %H:%M:%S”) の%Yは現在の西暦、%mは現在の月、%dは現在の日付、%Hは現在の時の24時間表記、%Mは現在の分、%Sは現在の秒です。strftime(“%B, %d(%A)”)の%Bは現在の月の英語名、%Aは曜日の英語名です。

より簡単な表記法

PHPのstrftimeは以下のような使い方もできます。

実行すると以下のように表示されます。

02/17/21 15:31:15

02/17/21 15:31:15

strftime(“%D %T”)の%Dは%m/%d/%y、%Tは%H:%M:%Sと同じです。またstrftime(“%x %X”)の%xは日付、%Xは時刻を表示します。

strtotimeと組み合わせて使える

PHPのstrftimeは現在の時刻を扱うだけでなく、2つ目のパラメータにUNIXタイムスタンプの特定の日付を指定できます。そこでUNIXタイムスタンプを返すstrtotimeと組み合わせれば、以下のようなことができます。

strftimeとstrtotimeで様々なことが出来る

上のサンプルの結果は以下になります。

02/17/21
02/18/21
02/24/21
02/22/21
02/10/21

2021年2月17日水曜日を起点として、翌日・翌週・次の月曜日・前の水曜日の日付を表示しています。PHPのstrftimeとstrtotimeを組み合わせれば、このように色々な使い方ができるということです。

Pythonのstrftime

次はPythonのstrftimeの解説です。Pythonでは以下のようにdatetimeオブジェクトのメソッドとしてstrftimeを使用します。

実行すると以下のように表示されます。

2021/02/17 10:34:43

2021 February 17(Wednesday)

日時をint型で取得する

strftimeで文字列ではなく数値として日付などを取得したい場合は、以下のようにint()で得ることができます。

実行すると以下のように表示されます。type()でint型になっているのがわかります。

2

<class ‘int’>

17

timedeltaで一定間隔の日付リストを作れる

以下のように時間の間隔を示すtimedeltaオブジェクトと組み合わせると、strftimeで一定間隔の日付リストを作ることができます。

timedeltaのサンプルの解説

上のサンプルの実行結果は以下のようになります。

2020年01月01日
2020年01月08日
2020年01月15日
2020年01月22日

timedelta(weeks=1)で一週間間隔を指定し、forループで4回、一週間毎の日付を配列に格納します。最後にその内容を表示します。なおjoin()の使い方は以下の通りです。

‘要素の間に挟む文字列’.join(中身を1つにつなげたい配列)

Rubyのstrftime

最後はRubyのstrftimeを解説します。以下のように使用します。

実行結果は以下になります。

2021-02-17 12:02:46.379696936 +0000

“2021年02月17日 12時02分46秒”

Time.nowで取得したTimeオブジェクトをpで表示しても日時の文字列が出てきますが、strftameでそれを自由にフォーマットできるということです。

曜日を表示する

なお曜日を表示する場合は以下のようにします。

結果は以下の通りです。

“2021/02/17 Wednesday”

もし英語ではなく日本語で曜日を表示したい場合はどうしたらよいのでしょうか。Rubyは日本発のプログラミング言語ですが、strftimeだけで日本語の曜日を表示することはできません。

日本語で曜日を表示する方法

Rubyにおいて、日本語で曜日を表示するには、以下のようなやり方があります。

日本語曜日表示の解説

上のサンプルを実行すると以下のように表示されます。

“2021年02月17日 水曜日”

サンプルのstrftime(“%u”)の%uは曜日を数値で取得します。月曜日が1、火曜日が2といったように置き換えられます。ただし取得できる値は文字列なので、.to_iで数値に変換します。そしてyoubi[idx – 1]で配列の曜日の漢字を取得して表示するのです。idxから1を引くのは配列のインデックスは1からではなく0から始まるためです。

SE
曜日を日本語で表示することも可能なんですね。

PM
はい。ここでは3つのプログラム言語でのstrftimeの使い方を見ていきました。

strftimeで日時のフォーマットは簡単にできる

strftimeの使い方を、PHP・Python・Rubyのそれぞれについて解説しました。どの言語でも基本的な機能は同じです。元々strftimeはC言語のライブラリにあった関数で、古い歴史があります。そのため、その後に登場した言語でも同じ名前で採用されているのです。

この記事を機会にPHP、Python、Rubyの中でまだ知らない言語について勉強してみましょう。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)

Search

Popular

reccomended

Categories

Tags