説明
human_time_diff() は、2つの時刻の差を、「3時間」のような読みやすい文字列で返す関数です。
基本構文
human_time_diff( int $from, int $to = 0 ): string
引数
$from:開始のUNIXタイムスタンプ$to:終了のUNIXタイムスタンプ(省略すると現在)
戻り値
時間差の文字列。
使い方(サンプル)
echo esc_html( human_time_diff( get_the_time( 'U' ) ) . '前' );
注意点
- 日本語環境では「3 時間」のように返ります。
実務での使いどころ
- 「3時間前」「2日前」のような、経過時間を表示するとき。
よくあるミスと対処
- 戻り値に、「前」が付かない。「3 時間」のような文字列なので、
sprintf()などで、「前」を足す。 - 渡すのは、UTCのタイムスタンプ。文字列の日時を、
strtotime()で変換すると、タイムゾーンで、ずれる。 $toを省略すると、現在時刻(time())になる。
NG例
echo human_time_diff( strtotime( $post->post_date ) ); // タイムゾーンで、ずれる。「前」も付かない
OK例
$ago = human_time_diff( get_post_time( 'U', true ), time() );
echo esc_html( sprintf( '%s前', $ago ) );
使い分け早見表
| やりたいこと | 使うもの |
|---|---|
| 経過時間を、文字列で表示 | human_time_diff() |
| 日付を、書式を指定して表示 | wp_date() |
| 投稿の、UTCのタイムスタンプを取得 | get_post_time( 'U', true ) |
関連項目
wp_date()、current_time()、get_the_date()
公式リファレンス:human_time_diff() | Function | WordPress Developer Resources

コメント