WordPress-時間関係

時間関係の関数について

🕒 1. time()

  • PHP組み込みの関数。
  • **サーバーのローカル時刻(多くはUTC)**を返す。
  • WordPressとは無関係。

🌏 2. current_time('timestamp')

  • WordPressの「一般設定 > タイムゾーン」で指定された
    **サイトのローカル時刻(例:日本時間)**を返す。
  • time() とズレることがある(例:日本の場合は +9時間)。

🧩 3. filemtime($file) の返す値

  • OS(サーバー)のシステム時刻ベース(=time()と同じ基準)
  • つまり、「サーバー時間(UTCなど)」で保存されている。

filemtime() はサーバー時間で記録されているので、
それと比較するなら time() を使うのが一致します。

これを current_time('timestamp') にすると、
WordPressが日本時間(+9時間) に変換して返すため、
差分が「-9時間」となって「キャッシュ期限切れ」と誤判定されてしまうんです。

🧭 一言でまとめると

関数基準使いどころ
time()サーバーのシステム時間(UTCなど)ファイル操作・キャッシュ・OSレベルの比較
current_time('timestamp')WordPressのローカル設定時間表示やログ出力(人間向け)

自分が使いやすかった関数

時間関係は選択肢が多いので何か一つに決めた上でタイムゾーンを明確に宣言する。
↓は保存ファイルの時間判定に使用したタイムスタンプ関数(strtotime())。

📅 strtotime()関数の概要

strtotime()(string to time)関数は、人間が読める形式の英語の日時を表す文字列を解析し、Unixタイムスタンプに変換するPHPの組み込み関数です。

  • Unixタイムスタンプとは、1970年1月1日 00:00:00 UTC(協定世界時)から経過した秒数を表す整数値です。

この関数を使うと、特定の日付はもちろん、「1週間後」や「来週の月曜日」といった相対的な日時も簡単に計算できます。

⚙️ 構文

引数説明
$datetime_stringstring解析したい日付/時刻を表す英語の文字列(例: "now""next Monday""2025-10-20"
$base_timestampint(オプション)相対的な日時を計算する際の基準となるUnixタイムスタンプ。指定しない場合は現在の時刻が基準になります。
戻り値int変換されたUnixタイムスタンプ。失敗した場合は**false**を返します。

💡 主な使い方と例

1. 特定の日付/時刻のタイムスタンプを取得する

特定の日付や時刻を直接指定して、そのタイムスタンプを取得できます。

2. 相対的な日時を計算する (最も便利!)

現在時刻を基準に、「何日後」「何週間前」といった相対的な日時を計算するのに非常に役立ちます。

文字列の例意味
"now"現在時刻
"tomorrow"明日
"yesterday"昨日
"+1 day"1日後
"-2 weeks"2週間前
"+3 months"3ヶ月後
"next Monday"次の月曜日
"last Friday"前の金曜日
"+1 week 2 days 4 hours"1週間と2日と4時間後

サンプルコード

⚠️ 注意点

  • strtotime()が返すのは**Unixタイムスタンプ(秒数)**であり、この値にはタイムゾーンの情報は含まれていません。
  • より複雑な日付・時刻の操作や、厳密なタイムゾーンの扱いが必要な場合は、DateTimeImmutableクラスを使用することがPHPの公式ドキュメントでも推奨されています。
  • 解析できる文字列は英語の日時形式に基づいています。日本語の「来週」などでは機能しません。

strtotime()は、簡単な日付の計算や変換を行う上で非常に強力で便利な関数です。

コメント

タイトルとURLをコピーしました