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 関数と比較します。