PHP Snippets

PHP の Unix タイムスタンプ スニペット

Unix 秒の取得、ミリ秒の生成、タイムスタンプの整形、DateTime オブジェクト間の変換、日付文字列の解析を行う PHP の例。

Current Unix timestamp (seconds)
time()
Current Unix timestamp (milliseconds)
round(microtime(true) * 1000)
Formatted date from timestamp
date("Y-m-d H:i:s", 1700000000)
Date in specific timezone
date_default_timezone_set("America/New_York");
date("Y-m-d H:i:s", 1700000000);

// Or with DateTime:
$dt = new DateTime();
$dt->setTimestamp(1700000000);
$dt->setTimezone(new DateTimeZone("America/New_York"));
echo $dt->format("Y-m-d H:i:s");
Timestamp from date string
strtotime("2023-11-15 06:13:20 UTC")

PHP のタイムスタンプの基本

PHP の time() は整数の Unix 秒を返します。秒未満の精度が必要なとき、または JavaScript 向け API のために Unix ミリ秒を求めたいときは microtime(true) を使います。

PHP での日付の整形

date() はサーバーの既定タイムゾーンでタイムスタンプを整形し、gmdate() は UTC で整形します。明示的なタイムゾーン処理には DateTime と DateTimeZone を使い、デプロイ間で一貫した動作にします。

PHP の本番運用メモ

PHP アプリは、既定タイムゾーンが異なる共有ホスティング、コンテナ、ワーカー上で動くことがよくあります。サーバーの既定値は実装上の詳細として扱いましょう。永続データには Unix 秒または UTC の DateTime 値を保存し、ユーザー・レポート・連携向けにタイムスタンプを整形する箇所で DateTimeZone を選びます。

  • コントローラ、ジョブ、簡単なスクリプトの整数 Unix 秒には time() を使う
  • 秒の小数やミリ秒精度が必要なときは microtime(true) を使う
  • サーバーのタイムゾーンを無視する安定した UTC 整形には gmdate() を使う
  • 日付を誤って変更すべきでないコードには DateTimeImmutable を使う

FAQ

time() はミリ秒を含むのか?
いいえ。time() は整数の Unix 秒を返します。秒の端数が必要な場合や、ミリ秒タイムスタンプを計算する必要がある場合は microtime(true) を使ってください。
なぜ date() ではなく gmdate() を使うのか?
gmdate() はタイムスタンプを UTC で整形します。date() はサーバーに設定されたタイムゾーンを使い、これはローカル開発、コンテナ、本番ホスティングの間で変わることがあります。
PHP の変換を確認するには?
同じ値を gmdate('c', $timestamp) で変換し、マイグレーションで使う前に、独立したエポック変換器やデータベースの UTC 関数と比較します。