WordPressでファイルの更新日時を取得する

投稿者: | 2018年1月25日

WordPressでは、WordPressを構成するファイルの一つ wp-settings.php 内で、タイムゾーンを UTC に設定しています。そのため、date 関数で日付を取得すると、日本時間とは9時間ずれた時刻を取得してしまいます。
日本での日時を取得するには、date_i18n関数か、またはcurrent_time関数を使います。Webを検索すると、そのように書いているサイトがほとんどですし、それは間違っていません。
でも、それは現在の日時を取得するとか、○時間後の時刻を取得するとか、そういう場合の話です。

ファイルの更新日時など、WordPress外のリソースから日付を取得するときには、話が変わってきます。
PHPでファイルの更新日時を取得するには、filemtime関数を使います。以下のように、date関数とdate_i18n関数を使用した場合で、取得できる日時を比べてみます。

// このファイルの更新日は 2018-01-18 17:49
$file_name = '/var/www/html/.../sample.jpg';

// date関数
echo 'date= ' . date('Y-m-d H:i', filemtime($file_name));
// date_i18n関数
echo 'i18n= ' . date_i18n('Y-m-d H:i', filemtime($file_name));

結果は次のようになります。

date= 2018-01-18 08:49
i18n= 2018-01-18 08:49

このように、どちらの関数を使っても9時間ずれました。

ファイルの更新日時を正しく取得するには

それには、WordPressのgmt_offsetオプションを使用します。
上記のファイルの更新日時を取得するコードを書き換えると、次のようになります。

echo 'date= ' . date('Y-m-d H:i', filemtime($file_name) + 3600 * get_option('gmt_offset'));

結果は

date= 2018-01-18 17:49

正しく取得できました。

ADs
 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)