PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPのstrftime()関数とは?使い方と書式指定子の一覧をわかりやすく解説

PHPのstrftime()関数は、ロケール(地域)設定に基づいてローカルの日付・時刻を整形するための関数です。指定したフォーマット文字列に従って、与えられたUnixタイムスタンプを文字列に変換して返します。タイムスタンプを省略した場合は、現在のローカル時刻が使用されます。

なお、この関数はPHP 8.1.0以降で非推奨となっている点に注意してください。新規のコードでは、date()関数やIntlDateFormatterクラスなど、他の代替手段の利用が推奨されています。

構文

strftime(format, timestamp)

パラメータ

  • timestamp − 整形対象となる日付・時刻を表すUnixタイムスタンプを指定します。

  • format − 結果の出力形式を指定するフォーマット文字列です。主な書式指定子は以下の通りです。

    • %a − 曜日の省略形(例:Sun、Mon)

    • %A − 曜日の正式名称(例:Sunday、Monday)

    • %b − 月の省略形(例:Jan、Feb)

    • %B − 月の正式名称(例:January、February)

    • %c − ロケールで推奨される日付と時刻の表現

    • %C − 世紀の数値(年を100で割った値、範囲は00〜99)

    • %d − 日(01〜31、ゼロ埋めあり)

    • %D − %m/%d/%y と同じ

    • %e − 日(1〜31、ゼロ埋めなし)

    • %g − %Gと同様だが、世紀を含まない2桁の年

    • %G − ISO週番号(%V参照)に対応する4桁の年

    • %h − %b と同じ

    • %H − 24時間制の時(00〜23)

    • %I − 12時間制の時(01〜12)

    • %j − 年間の通算日(001〜366)

    • %m − 月(01〜12)

    • %M − 分

    • %n − 改行文字

    • %p − 時刻に応じた「am」または「pm」

    • %r − a.m./p.m. 表記による時刻

    • %R − 24時間表記による時刻

    • %S − 秒

    • %t − タブ文字

    • %T − 現在の時刻(%H:%M:%S と同等)

    • %u − 曜日の数値表現(1〜7、月曜=1)。注意:Sun Solaris環境では日曜=1となります

    • %U − その年の週番号(最初の日曜日を第1週の初日として数える)

    • %V − ISO 8601規格によるその年の週番号(01〜53)。第1週は当年に少なくとも4日以上含まれる最初の週で、月曜を週の初日とします

    • %W − その年の週番号(最初の月曜日を第1週の初日として数える)

    • %w − 曜日の数値表現(日曜=0)

    • %x − 時刻を含まない、ロケールで推奨される日付表現

    • %X − 日付を含まない、ロケールで推奨される時刻表現

    • %y − 世紀を含まない2桁の年(00〜99)

    • %Y − 世紀を含む4桁の年

    • %Z / %z − タイムゾーンの名称または略称

    • %% − 「%」という文字そのもの

戻り値

strftime()関数は、指定されたフォーマット文字列に従って整形された日付・時刻の文字列を返します。タイムスタンプが省略された場合は、現在のローカル時刻をもとに整形されます。

使用例1

まずは基本的な例を見てみましょう。

<?php
    setlocale(LC_TIME, 'en_US');
    echo strftime("%b %d %Y %H:%M:%S", mktime(20, 0, 0, 10, 31, 2018)) . "\n";
?>

出力結果

Oct 31 2018 20:00:00

この例では、setlocale()でロケールを英語圏(en_US)に設定し、mktime()で生成した2018年10月31日20時00分00秒のタイムスタンプを、指定したフォーマットで出力しています。

使用例2

別の例も確認してみましょう。

<?php
    echo(strftime("%B %d %Y, %X %Z", mktime(20, 0, 0, 12, 31, 92)) . "<br>");
?>

出力結果

December 31 1992, 20:00:00 UTC

ここでは、月の正式名称(%B)、日付、年、時刻(%X)、タイムゾーン(%Z)を組み合わせて出力しています。

まとめ

strftime()関数を使うと、ロケールに応じた柔軟な日付・時刻の表示が可能になります。ただしPHP 8.1以降では非推奨のため、既存コードの保守以外での利用は避け、新しいプロジェクトではdate()関数やIntlDateFormatterクラスの活用を検討しましょう。

  1. 【PHP入門】filectime()関数の使い方 – ファイルの最終変更時刻を取得する方法

    PHPのfilectime()関数は、ファイルの最終変更時刻を取得するための関数です。取得できる時刻はUNIXタイムスタンプ形式で返され、処理に失敗した場合にはfalseを返します。なお、filectime()が返す「変更時刻」は、ファイルの中身だけでなく、パーミッションや所有者などファイルのメタ情報(inode)が変更された時刻も指します。単純にファイル内容の更新日時を知りたい場合はfilemtime()関数を使うとよいでしょう。構文filectime ( file_path );パラメータfile_path − 最終変更時刻を調べたいファイルへのパスを指定します。戻り値filectime(

  2. PHPのfileatime()関数とは?使い方とサンプルコードをわかりやすく解説

    PHPのfileatime()関数は、指定したファイルに最後にアクセス(読み取りなど)があった日時を取得するための組み込み関数です。取得できる値はUNIXタイムスタンプ形式で返され、ファイルへの最終アクセス時刻をプログラム内で扱えるようになります。ファイルが存在しない場合やアクセス権限がないなど、処理に失敗した場合はfalseを返します。基本構文fileatime ( file_path );パラメータfile_path − 最終アクセス日時を調べたいファイルへのパスを指定します。相対パスでも絶対パスでも指定可能です。戻り値ファイルの最終アクセス時刻をUNIXタイムスタンプ(1970年1月1日