strftime
そふぃのPHP入門 >> PHP関数リファレンス >> 日付・時刻関数 >> strftime

strftime

解説 ロケールの設定に基づいて日時を書式化する
書式 string strftime( string format [, int timestamp ] )
string strftime( string 書式 [, int タイムスタンプ ] )
引数 format フォーマットする書式
timestamp Unixタイムスタンプ
返値 指定した書式でフォーマットされた文字列

PHPマニュアル:strftime strftime()

strftime()関数:概略解説

strftime()は第2引数で指定されたタイムスタンプを第1引数で指定したフォーマット文字によってフォーマット(整形)し、整形後の文字列を返します。

strftime()関数:返り値解説

フォーマット(書式化)された文字列を返します。

strftime()関数:引数解説

format書式
フォーマット(書式)を指定します。書式の指定にはフォーマット文字という書式化用に予め定められた文字を使います。フォーマット文字の一覧は後述します。

参考 フォーマット文字一覧

timestampタイムスタンプ
フォーマットしたい日付や時刻のタイムスタンプを指定します。省略した場合はtime()関数の値、つまり現在時刻が適用されます。

strftime()関数:補足解説

strftime()date()関数と同じ働きを持っていますが、書式化に使用するフォーマット文字が違います。また、setlocale()で出力したいロケールを設定する事ができ、ロケールの設定によって曜日や月の名前が変化します。

strftime()関数:注意

全てのプラットフォームが負の値のタイムスタンプをサポートしているわけではないため、日付の範囲はUNIX時(1970年1月1日)以降に制限されます。

参考関数

  • gmstrftime() ---- ロケールの設定に基づいて日時を書式化し、GMTの日付で取得する
  • date() ---- 日付・時刻を書式化する
  • mktime() ---- 指定した日時のUNIXタイムスタンプを取得する
  • setlocale() ---- ロケール情報をセットする

フォーマット文字一覧

strftime()のフォーマット文字一覧です。gmstrftime()でも同じフォーマット文字を使用します。

この表に挙げられているフォーマット文字は、使用するCライブラリによってはサポートされていない可能性があります。

フォーマット文字 説明
%a 短縮された曜日の名前
%A 完全な曜日の名前
%b 短縮された月の名前
%B 完全な月の名前
%c 適当な日付と時間の表現
%C 世紀(年)を100で割り、整数に丸めたもの。(00 ~ 99)
%d 日付を10進数で。(01 ~ 31)
%D 現在の日付。%m/%d/%yと同じ
%e 月単位の日付を10進数で表したもの。日付が1桁の場合は、前に空白を一つ付けます。(1 ~ 31)
%h %bと同じ。
%H 時間を24時間表示の10進数で(00 ~ 23)
%I 時間を12時間表示の10進数で(01 ~ 12)
%j 年間での日付を10進数で表現(001 ~ 366)
%m 月を10進数で表現(01 ~ 12)
%M 分を10進数で表現
%n 改行文字
%p 指定した時間により"am"または"pm"、または現在のロケールに対応した文字列
%r a.m.およびp.m.表記で表した時間
%R 24時間表記で表した時間
%S 秒を10進数で表現
%t タブ文字
%T 現在の時間。%H:%M:%Sと同じ。
%u 10進数表記の曜日(1 ~ 7)1が月曜日。
%U 年間で何番目の週であるかを10進数で表現。年間で最初の日曜を最初の週の最初の日として数えます。
%V ISO 8601:1988で規定された現在の年の週番号の10進数表現(01 ~ 53)。1は最初の週でその週は現在の年に最低4日はあります。週は月曜日から始まります。
%W 現在の年で何番目の週であるかを10進数で表現。年間で最初の月曜を最初の週の最初の日として数えます。
%w 曜日を10進数で表現。日曜は0になります。
%x 時間を除いた日付
%X 日付を除いた時間
%y 世紀の部分を除いた年を10進数として表現。(00 ~ 99)
%Y 世紀を含む年を10進数で表現
%Z タイムゾーンまたはその名前または短縮形
%% "%"文字そのもの

この表に挙げられている以外の文字列があればその文字列はそのまま出力されます。

サンプルスクリプト

簡単な利用例

  1. <?php
  2. // フォーマット文字が使用可能である必要があります。
  3. echo strftime( "%D %T" );
  4. ?>

出力結果

06/28/17 14:28:07

この例では第2引数の日時が指定されていないのでデフォルトの現在時刻(time()の値)が表示されます。

setlocale()関数でロケールを指定

  1. <?php
  2. // 各ロケールは正しくインストールされている必要があります。
  3. setlocale( LC_TIME, "ja_JP.utf8" ); // ロケールを日本に設定
  4. echo strftime( "%A in Japan" );
  5. ?>

出力結果

水曜日 in Japan

ロケールを日本に設定しているのでフォーマット文字 %A(曜日)が日本語になる