.NETエンジニア・プログラマ向けの技術情報・業界ニュースをお届けします。

  1. FEnet.NETナビ
  2. .NETコラム
  3. プログラミング言語
  4. PHP
  5. strftimeとは?strftimeの使い方をPHP・Python・Rubyの3つの言語で解説!

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

  • PHP
  • Python
  • Ruby
  • プログラミング言語
公開日時:   更新日時:
strftimeとは?strftimeの使い方をPHP・Python・Rubyの3つの言語で解説!
この記事でわかること
    基本情報技術者試験の試験対策はこちら>>

    システム
    エンジニア
    strftimeを使うメリットとはなんでしょう?

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

    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から始まるためです。

    システム
    エンジニア
    曜日を日本語で表示することも可能なんですね。

    プロジェクト
    マネージャー
    はい。ここでは3つのプログラム言語でのstrftimeの使い方を見ていきました。

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

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

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

    FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
    株式会社オープンアップシステムロゴ

    株式会社オープンアップシステムはこんな会社です

    秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
    数多くのエンジニアが集まります。

    秋葉原オフィスイメージ
    • スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。

    • 充実した研修制度

      充実した研修制度

      毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。

    • 資格取得を応援

      資格取得を応援

      スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。

    • 東証プライム上場企業グループ

      東証プライム上場企業グループ

      オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。

      安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。

    株式会社オープンアップシステムに興味を持った方へ

    株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。

    年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
    まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。

    株式会社オープンアップシステムへのご応募はこちら↓
    株式会社オープンアップシステムへのご応募はこちら↓

    Array新着案件New Job