日付と時刻の書式

日付と時刻の書式をカスタマイズする

WordPress の関数の中には、the_date()the_time() などのように投稿日時を表示させるものがあります。

デフォルトでは、これらの関数は「管理画面」>「設定」>「一般」で設定されている形式で日付と時刻を表示します。ここで設定した日付と時刻の形式は、WordPress 全体で有効となります。

日付と時刻の書式

スクリーンショットの各日付と時刻の書式設定の横にある文字列に注意してください。この文字列はフォーマット文字列と呼ばれます。各文字は、日付または時刻の特定の部分を表します。

例えば、

l, F j, Y

というフォーマット文字列は、次のような日付を作成します (コンマは文字どおりに読み取られることに注意してください)。

Friday, September 24, 2004

以下は、引数として使われているアルファベットの説明です。

  • l = フルスペル形式の曜日 (小文字の L) 。
  • F = フルスペル形式の月。
  • j = 日にち。
  • Y = 4桁の年 (小文字の y を使うと2桁になる)

WordPress は PHP というプログラミング言語で書かれているため、日付のフォーマットには PHP に組み込まれている日付関数を使用しています。PHP マニュアルの date (日付・時刻) 関数の引数はそのまま WordPress にも用いることが出来ます。

以下は、同ページにある便利な項目を表にしたものです。

d 日。先頭にゼロをつける。 01 から 31
j 日。先頭にゼロをつけない。 1 から 31
S 英語形式の序数を表す2文字のサフィックス。 1stや 2nd , 15thなどに含まれる、st, nd, rd または th。
曜日
l フルスペル形式。 (小文字の ‘L’) Sunday から Saturday
D 3文字のテキスト形式。 Mon から Sun
m 数字。先頭にゼロをつける。 01 から 12
n 数字。先頭にゼロをつけない。 1 から 12
F フルスペルの文字。 January から December
M 3文字形式。 Jan から Dec
Y 4桁の数字。 例: 1999 または 2003
y 2桁の数字。 例: 99 または 03
時刻
a 午前または午後 (小文字) am または pm
A 午前または午後 (大文字) AM または PM
g 時。12時間単位。先頭にゼロを付けない。 1 から 12
h 時。12時間単位。先頭にゼロをつける。 01 から 12
G 時。24時間単位。先頭にゼロを付けない。 0 から 23
H 時。24時間単位。先頭にゼロをつける。 00 から 23
i 分。先頭にゼロをつける。 00 から 59
s 秒。先頭にゼロをつける。 00 から 59
T タイムゾーンの略称 例: EST, MDT …
すべての日付/時刻
c ISO 8601 2004-02-12T15:19:21+00:00
r RFC 2822 Thu, 21 Dec 2000 16:01:07 +0200
U Unixタイムスタンプ (Unixエポックからの秒数) 1455880176

フォーマット文字列の例

日付と時刻のフォーマットと、出力結果を例示します。

  • F j, Y g:i a – November 6, 2010 12:50 am
  • F j, Y – November 6, 2010
  • F, Y – November, 2010
  • g:i a – 12:50 am
  • g:i:s a – 12:50:48 am
  • l, F jS, Y – Saturday, November 6th, 2010
  • M j, Y @ G:i – Nov 6, 2010 @ 0:50
  • Y/m/d \a\t g:i A – 2010/11/06 at 12:50 AM
  • Y/m/d \a\t g:ia – 2010/11/06 at 12:50am
  • Y/m/d g:i:s A – 2010/11/06 12:50:48 AM
  • Y/m/d – 2010/11/06

一般設定の書式設定を上書きする

時刻と日付の関数は、テーマまたはプラグインファイルの特定の場所のデフォルトの日付と時刻のフォーマットを上書きするために、パラメーターとしてフォーマット文字列を受け入れます。このフォーマット文字列は、管理画面の設定と同じように、各文字が日付または時刻の特定の部分を表す文字のテンプレートです。

テンプレートファイル内で、日付と時刻のフォーマット文字列を the_time() テンプレートタグのパラメーターとして以下のように設定すると、

Posted on <?php the_time( 'l, F jS, Y' ); ?>.

Webサイト上では以下のように表示されるでしょう。

Posted on Friday, September 24th, 2004.

ローカライズ

日付をローカライズするには、date_i18n() 関数を使ってください。
__() や _e() などを使えば日付フォーマット文字列を安全にローカライズすることができるでしょう。
date_i18n() 関数は、基本的にPHPの date() 関数と同じように動作しますが、月名や曜日などをサイトの現在のロケールに変換する点が異なります。
同じ引数を使用して、 date() の呼び出しを date_i18n() の呼び出しに置き換えることができます。

$date = date_i18n( 'F j, Y' );
$time = date_i18n( 'g:i a' );

または、事前に定義された形式を __() または _e() でラップして、翻訳者が日付と時刻を適切なローカル形式に調整できるようにすることもできます。
その場合、翻訳者のコメントを含めて、日付形式が何を参照していて、どこで使用されているかを翻訳者に知らせて、正確に変換できるようにする必要があります。

__( 'Y/m/d g:i:s a', 'textdomain' );

エスケープ

一部の文字には、PHP の日付関数に関連付けられた形式がありません。たとえば、書式文字列で渡される x は、実際のリテラル x を返します。 ただし、これは将来のある時点で変更される可能性があり、x に関連する形式が存在する場合があります。

そのため、日付形式の文字列のリテラル文字を常に \ でエスケープする必要があります。次の例では、of という単語のすべての文字がエスケープされることに注意してください。

date_i18n( __( 'l jS \o\f F Y', 'textdomain' ) );

この例では、サイトのフロントエンドで次のようにレンダリングされます。

Saturday 25th of February 2017

原文

この記事は役に立ちましたか ? どうすればさらに改善できますか ?