wordpress運営で、「今日の日付」を表示したいときってないですか?
ちょっと、ハマってしまったというか、悩んだことがありましたので記事にしておきます。


google広告

一見、これでよさそうだけど。。。

「php 今日の日付」などで検索をかけると、date(“Y/m/d”)などと書いてありますので

<?php echo date("Y-m-d"); ?>

と書いてみます。ちょっと当サイトで、single.phpに書いて試してみると、

todaysdate101

このように表示されて、確かに一見良さそうなんですが、

<?php echo date("Y-m-d H:i:s"); ?>

こう書き換えて表示させると

todaysdate102

時間まで表示できますが、

todaysdate103

パソコンの右下の時間を確認すると、ちょうど9時間遅れていることが分かります。ワードプレスの中では、こんな表示がルールのようです。

運営の仕方にもよるけど

9時間くらい気にしない!という運営もあると思います。記事が更新されて3日間は「new!」と表示してユーザーにアピールするなんて運営をしているときは問題なさそうですが、ワールドカップまで、あと何日!なんて運営している時は、ちょっと問題です。

第一感は9時間ずらすだった

管理人の第一感は、9時間ずらすことでした。つまり

<?php echo date("Y-m-d H:i:s" , strtotime("+9 hour")); ?>

・・・確かにこれでも正確に表示されるんですが、日付と時刻の書式 – WordPress Codex 日本語版を読むと、

日付をローカライズするには、date_i18n()/en 関数を使ってください。

とあります。そこで、WordPressでの現在日時取得はdate_i18n()を使う | UCWD-Studio.【ホームページ制作 / 京都】 こちらのサイトさんから教えていただきました。

<?php echo date_i18n("Y-m-d H:i:s");//現在時刻まで表示 ?>
<?php echo date_i18n("Y-m-d");//今日の日付だけ表示 ?>

おそらく、これが正解だと思います。

追記 2014/6/5

もう少しメモしておきます

$today = date_i18n("Y-m-d");//今日の日付
$tomorrow = date( "Y-m-d",strtotime("$today +1 day"));//明日の日付
$dayaftertomorrow = date( "Y-m-d",strtotime("$today +2 day"));//あさっての日付
echo  date("m月d日", strtotime("$tomorrow"));//明日の日付を○月○日と表示したいとき

functions.phpに日付計算式を書いて、ショートコードで返す場合

function today_date_keisan() {
$today = date_i18n("Y-m-d");
return $today;
}
add_shortcode('today_date_hyouji','today_date_keisan');

このようにreturnを使わないと上手く表示できない。echoだとページのどこに表示されるか分からない

広告