PHPでタイムスタンプを取得する方法はいくつかあります。
もっとも基本的なのは、現在時刻のUnixタイムスタンプを取得できる time() です。
ただし、実務では「秒単位でよいのか」「ミリ秒まで必要なのか」「日本時間として扱いたいのか」「WordPressで使うのか」などによって、適切な書き方が変わります。
この記事では、PHPでタイムスタンプを取得する方法を、基本から実務での注意点まで詳しく解説します。
タイムスタンプとは
Unixタイムスタンプの意味
Unixタイムスタンプとは、1970年1月1日 00:00:00 UTCからの経過秒数を表す数値です。
たとえば、次のような値です。
1717382400
この数値は、人間が見てもすぐには日時が分かりませんが、プログラムでは日付の比較や計算に使いやすい形式です。
たとえば、以下のような処理に使われます。
<?php
$now = time();
echo $now;
time() を実行すると、現在時刻のUnixタイムスタンプが秒単位で返されます。
タイムスタンプにはタイムゾーン情報が含まれない
注意したいのは、Unixタイムスタンプ自体にはタイムゾーン情報が含まれないという点です。
たとえば、次のように取得した値は、
<?php
$timestamp = time();
「日本時間のタイムスタンプ」ではありません。
Unixタイムスタンプは、ある瞬間を表す数値です。
日本時間として表示するか、UTCとして表示するか、アメリカ時間として表示するかは、表示時のタイムゾーン設定によって変わります。
そのため、日時を表示するときは、タイムゾーンを意識する必要があります。
現在のタイムスタンプを取得する方法
time() を使う
PHPで現在のUnixタイムスタンプを取得するもっとも基本的な方法は、time() を使うことです。
<?php
$timestamp = time();
echo $timestamp;
出力例は次のようになります。
1717382400
time() は、現在時刻をUnixタイムスタンプとして秒単位で返します。
シンプルに現在時刻を記録したい場合は、基本的に time() を使えば問題ありません。
time() が向いているケース
time() は、次のような場面に向いています。
<?php
$createdAt = time();
$updatedAt = time();
たとえば、以下のような用途です。
- ログの記録
- 作成日時の保存
- 更新日時の保存
- 有効期限の判定
- 一定時間後の処理
たとえば、1時間後のタイムスタンプを作りたい場合は、次のように書けます。
<?php
$expiresAt = time() + 60 * 60;
echo $expiresAt;
60 * 60 は3600秒、つまり1時間です。
time() 使用時の注意点
time() は便利ですが、返す値はあくまで秒単位のUnixタイムスタンプです。
そのため、次のような用途では不十分な場合があります。
<?php
$timestamp = time();
たとえば、JavaScriptの Date.now() と合わせたい場合は注意が必要です。
JavaScriptの Date.now() はミリ秒単位です。
console.log(Date.now());
PHPの time() は秒単位です。
<?php
echo time();
桁数が異なるため、PHPとJavaScriptを連携する場合は、秒とミリ秒を混同しないようにしましょう。
DateTimeImmutable でタイムスタンプを取得する方法
DateTimeImmutable の基本
PHPで日時を安全に扱いたい場合は、DateTimeImmutable を使うのがおすすめです。
<?php
$date = new DateTimeImmutable();
$timestamp = $date->getTimestamp();
echo $timestamp;
DateTimeImmutable は日時を表すオブジェクトです。
getTimestamp() を使うことで、その日時に対応するUnixタイムスタンプを取得できます。
DateTimeImmutable を使うメリット
DateTimeImmutable を使うメリットは、タイムゾーンや日付計算を扱いやすいことです。
たとえば、日本時間を明示して現在日時を扱う場合は、次のように書きます。
<?php
$date = new DateTimeImmutable('now', new DateTimeZone('Asia/Tokyo'));
$timestamp = $date->getTimestamp();
echo $timestamp;
このように書くことで、日時を扱うときのタイムゾーンを明示できます。
ただし、同じ瞬間を表すUnixタイムスタンプは、タイムゾーンが違っても同じ値になります。
<?php
$tokyo = new DateTimeImmutable('now', new DateTimeZone('Asia/Tokyo'));
$utc = new DateTimeImmutable('now', new DateTimeZone('UTC'));
echo $tokyo->getTimestamp() . PHP_EOL;
echo $utc->getTimestamp() . PHP_EOL;
この2つは、同じ瞬間に生成されれば、ほぼ同じタイムスタンプになります。
タイムゾーンは、主に「日時文字列をどう解釈するか」「日時をどう表示するか」に影響します。
DateTimeImmutable が向いているケース
DateTimeImmutable は、次のような場面に向いています。
- タイムゾーンを明示したい
- 日付文字列を安全に扱いたい
- 日付計算をしたい
- 表示形式を柔軟に変えたい
- ミリ秒やマイクロ秒を扱いたい
- 実務で日時のバグを減らしたい
単純に現在のUnixタイムスタンプを取るだけなら time() で十分です。
しかし、日時処理が少しでも複雑になるなら、DateTimeImmutable を使ったほうが安全です。
ミリ秒単位のタイムスタンプを取得する方法
DateTimeImmutable でミリ秒を取得する
PHPでミリ秒単位のタイムスタンプを取得したい場合は、DateTimeImmutable の format() を使えます。
<?php
$timestampMs = (new DateTimeImmutable())->format('Uv');
echo $timestampMs;
format('U') はUnixタイムスタンプの秒を表します。
format('v') はミリ秒を表します。
そのため、format('Uv') と書くことで、秒とミリ秒を連結した13桁のタイムスタンプを取得できます。
出力例は次のようになります。
1717382400123
ミリ秒タイムスタンプは文字列で扱うのが安全
ミリ秒単位のタイムスタンプは、13桁程度になります。
1717382400123
64bit環境のPHPであれば整数として扱えることが多いですが、環境によっては桁あふれの問題が起きる可能性があります。
そのため、特に理由がなければ、ミリ秒タイムスタンプは文字列として扱うのが安全です。
<?php
$timestampMs = (new DateTimeImmutable())->format('Uv');
数値として比較や計算をしたい場合だけ、必要に応じて整数に変換しましょう。
<?php
$timestampMs = (int) (new DateTimeImmutable())->format('Uv');
ただし、古い32bit環境などでは注意が必要です。
microtime(true) でミリ秒を取得する
microtime(true) を使ってミリ秒タイムスタンプを取得することもできます。
<?php
$timestampMs = (int) round(microtime(true) * 1000);
echo $timestampMs;
microtime(true) は、マイクロ秒を含む現在のUnixタイムスタンプをfloatで返します。
処理時間の計測や、簡易的なミリ秒取得ではよく使われます。
ただし、microtime(true) はfloatであるため、厳密な値が必要な場面では注意が必要です。
現在時刻のミリ秒タイムスタンプを扱うだけなら、次の書き方のほうが分かりやすいです。
<?php
$timestampMs = (new DateTimeImmutable())->format('Uv');
マイクロ秒単位のタイムスタンプを取得する方法
format('Uu') を使う
マイクロ秒単位のタイムスタンプを取得したい場合は、format('Uu') を使います。
<?php
$timestampUs = (new DateTimeImmutable())->format('Uu');
echo $timestampUs;
U は秒、u はマイクロ秒を表します。
出力例は次のようになります。
1717382400123456
マイクロ秒タイムスタンプも文字列で扱う
マイクロ秒タイムスタンプは16桁程度になります。
そのため、ミリ秒よりもさらに桁数が大きくなります。
<?php
$timestampUs = (new DateTimeImmutable())->format('Uu');
このように、まずは文字列として扱うのが安全です。
数値計算が必要な場合のみ、環境を確認したうえで整数に変換しましょう。
<?php
$timestampUs = (int) (new DateTimeImmutable())->format('Uu');
ただし、環境によっては正しく扱えない可能性があります。
処理時間の計測なら hrtime() も検討する
マイクロ秒やナノ秒レベルで処理時間を計測したい場合は、現在時刻のタイムスタンプではなく、hrtime() を使う方法もあります。
<?php
$start = hrtime(true);
// 何らかの処理
$end = hrtime(true);
echo $end - $start;
hrtime(true) は高精度な時間計測に向いています。
現在日時を記録するなら DateTimeImmutable や microtime()、処理時間を測るなら hrtime()、というように使い分けるとよいでしょう。
日付文字列からタイムスタンプを取得する方法
strtotime() を使う
日付文字列からUnixタイムスタンプを取得したい場合は、strtotime() がよく使われます。
<?php
$timestamp = strtotime('2026-06-03 12:00:00');
echo $timestamp;
strtotime() は、日付や時刻を表す文字列をUnixタイムスタンプに変換します。
次のような相対的な指定も可能です。
<?php
echo strtotime('tomorrow');
echo PHP_EOL;
echo strtotime('+1 week');
echo PHP_EOL;
echo strtotime('last Monday');
簡単な日時変換であれば、strtotime() は便利です。
strtotime() の失敗判定
strtotime() は、変換に失敗した場合に false を返します。
そのため、次のように判定します。
<?php
$timestamp = strtotime($input);
if ($timestamp === false) {
echo '日付の変換に失敗しました';
} else {
echo $timestamp;
}
ここで重要なのは、=== false を使うことです。
次のような書き方は避けたほうがよいです。
<?php
$timestamp = strtotime($input);
if (!$timestamp) {
echo '日付の変換に失敗しました';
}
この書き方だと、タイムスタンプ 0 が返った場合にも失敗として扱われる可能性があります。
タイムスタンプ 0 は、1970-01-01 00:00:00 UTC を表す有効な値です。
そのため、失敗判定では必ず厳密比較を使いましょう。
<?php
if ($timestamp === false) {
echo '日付の変換に失敗しました';
}
strtotime() はデフォルトタイムゾーンの影響を受ける
strtotime() を使う場合、タイムゾーンにも注意が必要です。
<?php
$timestamp = strtotime('2026-06-03 12:00:00');
このコードでは、2026-06-03 12:00:00 がどのタイムゾーンの日時として解釈されるかは、PHPのデフォルトタイムゾーン設定に依存します。
日本時間として明示的に扱いたい場合は、DateTimeImmutable を使うほうが安全です。
<?php
$date = new DateTimeImmutable(
'2026-06-03 12:00:00',
new DateTimeZone('Asia/Tokyo')
);
$timestamp = $date->getTimestamp();
echo $timestamp;
実務では、日付文字列を正確に扱いたい場合、strtotime() より DateTimeImmutable のほうが安心です。
タイムスタンプを日時文字列に変換する方法
date() を使う
Unixタイムスタンプを人間が読める日時に変換するには、date() を使います。
<?php
$timestamp = time();
echo date('Y-m-d H:i:s', $timestamp);
出力例は次のようになります。
2026-06-03 15:30:00
date() は、指定したフォーマットに従って日時文字列を返します。
よく使うフォーマットは次の形です。
<?php
echo date('Y-m-d H:i:s');
これは、次のような形式で出力されます。
2026-06-03 15:30:00
date() はデフォルトタイムゾーンの影響を受ける
date() で表示される日時は、PHPのデフォルトタイムゾーンに影響されます。
日本時間で表示したい場合は、次のように設定します。
<?php
date_default_timezone_set('Asia/Tokyo');
echo date('Y-m-d H:i:s');
ただし、アプリケーション全体でタイムゾーンを設定する場合は、共通設定ファイルなどで一度だけ指定するのが一般的です。
<?php
// config.php など
date_default_timezone_set('Asia/Tokyo');
DateTimeImmutable で日本時間に変換する
より明示的にタイムゾーンを扱いたい場合は、DateTimeImmutable を使います。
<?php
$timestamp = time();
$date = new DateTimeImmutable('@' . $timestamp);
$date = $date->setTimezone(new DateTimeZone('Asia/Tokyo'));
echo $date->format('Y-m-d H:i:s');
@ を使うことで、Unixタイムスタンプから DateTimeImmutable オブジェクトを作成できます。
<?php
$date = new DateTimeImmutable('@1717382400');
ただし、このままだとUTC基準で扱われるため、日本時間で表示したい場合は setTimezone() を使います。
<?php
$date = $date->setTimezone(new DateTimeZone('Asia/Tokyo'));
タイムゾーンを指定してタイムスタンプを扱う方法
date_default_timezone_set() を使う
PHP全体のデフォルトタイムゾーンを設定したい場合は、date_default_timezone_set() を使います。
<?php
date_default_timezone_set('Asia/Tokyo');
echo date('Y-m-d H:i:s');
これにより、date() や strtotime() などの日時関数で、デフォルトタイムゾーンとして Asia/Tokyo が使われます。
DateTimeZone を使う
個別の日時処理でタイムゾーンを指定したい場合は、DateTimeZone を使います。
<?php
$timezone = new DateTimeZone('Asia/Tokyo');
$date = new DateTimeImmutable('now', $timezone);
echo $date->format('Y-m-d H:i:s');
実務では、重要な日時処理ほど DateTimeZone を明示するのがおすすめです。
グローバルな設定に頼りすぎると、別の環境に移したときや、複数のタイムゾーンを扱うときにバグが起きやすくなります。
タイムゾーンを指定してもUnixタイムスタンプの考え方は同じ
次のコードを見てください。
<?php
$tokyo = new DateTimeImmutable('2026-06-03 12:00:00', new DateTimeZone('Asia/Tokyo'));
$utc = new DateTimeImmutable('2026-06-03 03:00:00', new DateTimeZone('UTC'));
echo $tokyo->getTimestamp() . PHP_EOL;
echo $utc->getTimestamp() . PHP_EOL;
2026-06-03 12:00:00 の日本時間は、UTCでは 2026-06-03 03:00:00 です。
この2つは同じ瞬間を表すため、取得されるUnixタイムスタンプは同じになります。
データベースにタイムスタンプを保存する方法
Unixタイムスタンプを整数で保存する
データベースにUnixタイムスタンプを保存する場合は、整数型のカラムを使います。
秒単位のUnixタイムスタンプであれば、次のように保存できます。
created_at INT
PHP側では次のように取得します。
<?php
$createdAt = time();
SQLに保存するイメージは次のようになります。
INSERT INTO posts (title, created_at)
VALUES ('テスト記事', 1717382400);
Unixタイムスタンプで保存すると、比較や計算がしやすいというメリットがあります。
SELECT *
FROM posts
WHERE created_at >= 1717382400;
ミリ秒タイムスタンプは BIGINT を使う
ミリ秒単位のタイムスタンプを保存する場合は、13桁程度になります。
1717382400123
この場合、INT では足りない可能性があります。
そのため、ミリ秒タイムスタンプを保存する場合は BIGINT を使いましょう。
created_at_ms BIGINT
PHP側では次のように取得します。
<?php
$createdAtMs = (new DateTimeImmutable())->format('Uv');
DBに保存するときは、文字列として扱うか、DB側で BIGINT として保存します。
DATETIME や TIMESTAMP 型で保存する
日時を人間が読みやすい形で保存したい場合は、DATETIME や TIMESTAMP 型を使う方法もあります。
created_at DATETIME
PHP側では次のように日時文字列を作れます。
<?php
$now = new DateTimeImmutable('now', new DateTimeZone('Asia/Tokyo'));
$createdAt = $now->format('Y-m-d H:i:s');
SQLでは次のように保存できます。
INSERT INTO posts (title, created_at)
VALUES ('テスト記事', '2026-06-03 15:30:00');
Webアプリケーションでは、日時型を使うことも多いです。
実務では、以下のような設計がよく使われます。
DBにはUTCで保存する
表示時にユーザーのタイムゾーンへ変換する
日本向けのサービスだけであれば、最初から日本時間で統一する設計もあります。
ただし、将来的に海外展開やAPI連携がある場合は、UTC保存のほうが扱いやすいことが多いです。
WordPressでタイムスタンプを取得する方法
通常のUnixタイムスタンプなら time() を使う
WordPressで通常のUnixタイムスタンプを取得したい場合は、基本的にPHP標準の time() を使えます。
<?php
$timestamp = time();
これは、通常のUnixタイムスタンプです。
保存や比較に使う場合も分かりやすいです。
<?php
$expiresAt = time() + 7 * 24 * 60 * 60;
これは、現在時刻から7日後のUnixタイムスタンプを作る例です。
WordPressのサイトタイムゾーンを使うなら current_datetime()
WordPressの管理画面で設定されているサイトタイムゾーンを考慮したい場合は、current_datetime() を使うのがおすすめです。
<?php
$now = current_datetime();
echo $now->format('Y-m-d H:i:s');
current_datetime() は、WordPressのサイトタイムゾーンを反映した DateTimeImmutable オブジェクトを返します。
Unixタイムスタンプが必要な場合は、次のように getTimestamp() を使えます。
<?php
$now = current_datetime();
$timestamp = $now->getTimestamp();
echo $timestamp;
current_time('timestamp') は安易に使わない
WordPressには、current_time() という関数もあります。
<?php
$currentTime = current_time('timestamp');
ただし、current_time('timestamp') は通常のUnixタイムスタンプとは異なる値になることがあります。
WordPressのタイムゾーン設定やGMTオフセットの影響を受けるため、保存や比較に使う場合は注意が必要です。
そのため、実務では次のように使い分けるのが安全です。
<?php
// 通常のUnixタイムスタンプ
$timestamp = time();
// WordPressのサイトタイムゾーンに基づく日時
$now = current_datetime();
保存・比較には time()、WordPressのサイト設定に沿った表示や日時処理には current_datetime() を使うと分かりやすいです。
目的別のおすすめコード
現在のUnixタイムスタンプを秒で取得する
<?php
$timestamp = time();
echo $timestamp;
もっとも基本的な方法です。
単純に現在時刻を秒単位で記録したい場合に使います。
現在のUnixタイムスタンプをミリ秒で取得する
<?php
$timestampMs = (new DateTimeImmutable())->format('Uv');
echo $timestampMs;
JavaScriptや外部APIと連携する場合に便利です。
現在のUnixタイムスタンプをマイクロ秒で取得する
<?php
$timestampUs = (new DateTimeImmutable())->format('Uu');
echo $timestampUs;
高精度なログや、細かい時刻情報が必要な場合に使えます。
日付文字列からタイムスタンプを取得する
<?php
$date = new DateTimeImmutable(
'2026-06-03 12:00:00',
new DateTimeZone('Asia/Tokyo')
);
$timestamp = $date->getTimestamp();
echo $timestamp;
タイムゾーンを明示したい場合は、strtotime() よりもこの方法が安全です。
タイムスタンプを日本時間で表示する
<?php
$timestamp = time();
$date = new DateTimeImmutable('@' . $timestamp);
$date = $date->setTimezone(new DateTimeZone('Asia/Tokyo'));
echo $date->format('Y-m-d H:i:s');
Unixタイムスタンプを日本時間の日時文字列として表示できます。
1時間後のタイムスタンプを取得する
<?php
$oneHourLater = time() + 60 * 60;
echo $oneHourLater;
有効期限や予約処理などに使えます。
7日後のタイムスタンプを取得する
<?php
$sevenDaysLater = time() + 7 * 24 * 60 * 60;
echo $sevenDaysLater;
会員登録メールの有効期限や、キャンペーン終了日の管理などに使えます。
日付計算を DateTimeImmutable で行う
<?php
$now = new DateTimeImmutable('now', new DateTimeZone('Asia/Tokyo'));
$nextWeek = $now->modify('+1 week');
echo $nextWeek->format('Y-m-d H:i:s');
echo PHP_EOL;
echo $nextWeek->getTimestamp();
日付計算が複雑になる場合は、秒数を直接足すよりも modify() を使うほうが分かりやすいです。
よくあるミスと注意点
秒とミリ秒を混同する
PHPの time() は秒単位です。
<?php
echo time();
出力例は次のようになります。
1717382400
一方、JavaScriptの Date.now() はミリ秒単位です。
console.log(Date.now());
出力例は次のようになります。
1717382400123
PHPとJavaScriptを連携するときは、桁数の違いに注意しましょう。
PHPの秒をJavaScript側のミリ秒に合わせるなら、次のようにします。
<?php
$timestampMs = time() * 1000;
ただし、より正確に現在のミリ秒を取得したい場合は、次の書き方がおすすめです。
<?php
$timestampMs = (new DateTimeImmutable())->format('Uv');
タイムスタンプにタイムゾーンが含まれると思ってしまう
Unixタイムスタンプ自体には、タイムゾーン情報は含まれません。
<?php
$timestamp = time();
この値は、「日本時間のタイムスタンプ」ではありません。
日本時間として表示したい場合は、次のように変換します。
<?php
$date = new DateTimeImmutable('@' . $timestamp);
$date = $date->setTimezone(new DateTimeZone('Asia/Tokyo'));
echo $date->format('Y-m-d H:i:s');
strtotime() の失敗判定を間違える
次のような書き方は避けましょう。
<?php
$timestamp = strtotime($input);
if (!$timestamp) {
echo '変換失敗';
}
正しくは、次のように === false を使います。
<?php
$timestamp = strtotime($input);
if ($timestamp === false) {
echo '変換失敗';
}
strtotime() のタイムゾーン依存を忘れる
次のコードは、実行環境のデフォルトタイムゾーンに依存します。
<?php
$timestamp = strtotime('2026-06-03 12:00:00');
日本時間として明示的に扱いたい場合は、次のように書くほうが安全です。
<?php
$date = new DateTimeImmutable(
'2026-06-03 12:00:00',
new DateTimeZone('Asia/Tokyo')
);
$timestamp = $date->getTimestamp();
ミリ秒タイムスタンプを INT に保存してしまう
ミリ秒タイムスタンプは13桁程度になります。
1717382400123
これをDBの INT カラムに保存しようとすると、桁が足りない可能性があります。
ミリ秒タイムスタンプを保存するなら、BIGINT を使いましょう。
created_at_ms BIGINT
time() と DateTimeImmutable の使い分け
単純な現在時刻の記録なら time()
現在のUnixタイムスタンプを秒単位で取得したいだけなら、time() がシンプルです。
<?php
$timestamp = time();
たとえば、次のような用途に向いています。
- 作成日時の保存
- 更新日時の保存
- 有効期限の保存
- 簡単な時間比較
日時処理が絡むなら DateTimeImmutable
タイムゾーン、日付計算、表示形式の変換などが絡む場合は、DateTimeImmutable を使うのがおすすめです。
<?php
$now = new DateTimeImmutable('now', new DateTimeZone('Asia/Tokyo'));
echo $now->format('Y-m-d H:i:s');
echo PHP_EOL;
echo $now->getTimestamp();
日時処理は、シンプルに見えてもバグが起きやすい部分です。
特に、以下のような場合は DateTimeImmutable を使うと安全です。
- 日本時間とUTCを変換する
- 日付文字列を扱う
- 月末や翌月を計算する
- 夏時間がある国の日時を扱う
- APIと日時をやり取りする
- DB保存用と表示用で形式を分ける
PHPでタイムスタンプを取得する場合のまとめ
基本は time() を使う
現在のUnixタイムスタンプを秒単位で取得するだけなら、次のコードで十分です。
<?php
$timestamp = time();
シンプルで分かりやすく、多くの場面で使えます。
ミリ秒・マイクロ秒は DateTimeImmutable を使う
ミリ秒やマイクロ秒が必要な場合は、次のように書きます。
<?php
$timestampMs = (new DateTimeImmutable())->format('Uv');
$timestampUs = (new DateTimeImmutable())->format('Uu');
桁数が大きくなるため、基本的には文字列として扱うのがおすすめです。
日付文字列を扱うならタイムゾーンを明示する
日付文字列からタイムスタンプを取得する場合は、DateTimeImmutable と DateTimeZone を使うと安全です。
<?php
$date = new DateTimeImmutable(
'2026-06-03 12:00:00',
new DateTimeZone('Asia/Tokyo')
);
$timestamp = $date->getTimestamp();
strtotime() も便利ですが、デフォルトタイムゾーンに依存するため、厳密な日時処理では注意が必要です。
WordPressでは time() と current_datetime() を使い分ける
WordPressで通常のUnixタイムスタンプが欲しい場合は、time() を使います。
<?php
$timestamp = time();
WordPressのサイトタイムゾーンを反映した日時を扱いたい場合は、current_datetime() を使います。
<?php
$now = current_datetime();
echo $now->format('Y-m-d H:i:s');
current_time('timestamp') は通常のUnixタイムスタンプとは異なる値になることがあるため、保存や比較に使う場合は注意しましょう。
目的別の早見表
PHPで現在時刻を取得したい場合
| 目的 | 書き方 |
|---|---|
| 秒単位のUnixタイムスタンプ | time() |
| ミリ秒単位のタイムスタンプ | (new DateTimeImmutable())->format('Uv') |
| マイクロ秒単位のタイムスタンプ | (new DateTimeImmutable())->format('Uu') |
| 日本時間の現在日時 | new DateTimeImmutable('now', new DateTimeZone('Asia/Tokyo')) |
| 日付文字列から変換 | new DateTimeImmutable(...)->getTimestamp() |
| タイムスタンプを日時表示 | date('Y-m-d H:i:s', $timestamp) |
| 日本時間で日時表示 | setTimezone(new DateTimeZone('Asia/Tokyo')) |
| WordPressの通常タイムスタンプ | time() |
| WordPressのサイト日時 | current_datetime() |
実務でおすすめの使い分け
実務では、以下のように使い分けると分かりやすいです。
<?php
// 単純な現在時刻の記録
$timestamp = time();
// ミリ秒が必要なAPI連携
$timestampMs = (new DateTimeImmutable())->format('Uv');
// 日本時間の表示
$date = new DateTimeImmutable('@' . $timestamp);
$date = $date->setTimezone(new DateTimeZone('Asia/Tokyo'));
echo $date->format('Y-m-d H:i:s');
単純な用途では time()、日時処理が絡む場合は DateTimeImmutable。
この使い分けを覚えておくと、PHPのタイムスタンプ処理で迷いにくくなります。
以上、PHPでタイムスタンプを取得する方法についてでした。
最後までお読みいただき、ありがとうございました。









