【PHP8.x】date_timestamp_get関数の使い方

作成日: 更新日:

date_timestamp_get関数は、指定されたDateTimeまたはDateTimeImmutableオブジェクトからUnixタイムスタンプを取得する関数です。Unixタイムスタンプとは、1970年1月1日00:00:00 UTC(協定世界時)からの経過秒数を表す整数値のことであり、これにより日付や時刻を数値として一意に表現できます。

この関数は、引数としてDateTimeクラスまたはDateTimeImmutableクラスのインスタンスを一つ受け取ります。そして、そのオブジェクトが表す日時をUnixタイムスタンプとして整数値で返します。日付や時刻の比較、計算、データベースへの保存、あるいは異なるシステム間での日時情報の受け渡しなど、プログラミングにおいて日付データを数値として扱いたい場合に非常に有用です。

例えば、ある特定の日時をデータベースに記録する際や、外部のAPIに日付情報を送信する際に、人間が読みやすい「2023年10月26日10時30分」のような形式ではなく、コンピューターが処理しやすい数値形式であるUnixタイムスタンプが必要になることがあります。date_timestamp_get関数は、DateTimeオブジェクトが内部的に保持している詳細な日時情報を、秒単位のシンプルな数値に変換することで、このような用途に対応し、PHPでの日付処理の柔軟性と互換性を高めます。

基本的な使い方

構文(syntax)

<?php
$dateTime = new DateTime('2023-10-27 10:00:00');
$timestamp = date_timestamp_get($dateTime);
echo $timestamp;
?>

引数(parameters)

DateTimeInterface $object

  • object: DateTimeInterface: タイムスタンプを取得したいDateTimeInterfaceインターフェイスを実装したオブジェクト

戻り値(return)

int

指定されたUnixタイムスタンプ(1970年1月1日午前0時0分0秒UTCからの経過秒数)を整数型で返します。

サンプルコード

PHP: DateTimeからタイムスタンプを取得する

<?php

/**
 * DateTimeInterface オブジェクトからタイムスタンプを取得する例
 */
function getTimestampFromDateTime(DateTimeInterface $dateTime): int
{
  return date_timestamp_get($dateTime);
}

// DateTimeImmutable オブジェクトを作成
$dateTime = new DateTimeImmutable('2024-10-27 10:30:00');

// タイムスタンプを取得
$timestamp = getTimestampFromDateTime($dateTime);

// 結果を出力
echo "タイムスタンプ: " . $timestamp . PHP_EOL;

?>

このPHPのサンプルコードは、DateTimeInterfaceオブジェクトからUnixタイムスタンプを取得する方法を示しています。date_timestamp_get()関数を使用することで、DateTimeオブジェクトやDateTimeImmutableオブジェクトなどの日付と時刻を表すオブジェクトから、簡単にタイムスタンプを取得できます。

まず、getTimestampFromDateTime()という関数を定義しています。この関数は、DateTimeInterface型のオブジェクトを引数として受け取り、date_timestamp_get()関数を使ってそのオブジェクトに対応するタイムスタンプを整数値(int型)として返します。DateTimeInterfaceは、DateTimeクラスやDateTimeImmutableクラスなどが実装しているインターフェースなので、これらのクラスのオブジェクトを引数として渡すことができます。

次に、DateTimeImmutableクラスのオブジェクトを作成し、2024年10月27日10時30分00秒という日付と時刻を初期値として設定しています。DateTimeImmutableは、一度作成されると変更できない日付と時刻のオブジェクトを扱う際に便利です。

そして、先ほど定義したgetTimestampFromDateTime()関数に、作成したDateTimeImmutableオブジェクトを渡して、タイムスタンプを取得します。取得したタイムスタンプは整数値として変数 $timestamp に格納されます。

最後に、取得したタイムスタンプをecho文を使って出力します。PHP_EOLは改行コードを表す定数で、出力を見やすくするために使用しています。このコードを実行すると、「タイムスタンプ: 1730030000」のように、指定した日時を表すUnixタイムスタンプが表示されます。Unixタイムスタンプは、1970年1月1日午前0時0分0秒(UTC)からの経過秒数を示す整数値です。

date_timestamp_get関数は、DateTimeInterfaceオブジェクトからUnixタイムスタンプ(1970年1月1日からの秒数)を取得します。引数にはDateTimeInterfaceを実装したオブジェクト(DateTime, DateTimeImmutableなど)を渡す必要があります。この関数はPHP 5.3以降で使用可能です。DateTimeオブジェクトを直接操作する代わりに、DateTimeImmutableを使用すると、オブジェクトの状態が不変になるため、より安全なコードを書くことができます。タイムゾーンの設定が適切でない場合、予期しないタイムスタンプが返される可能性があるため、DateTimeオブジェクト作成時にタイムゾーンを明示的に指定することを推奨します。

DateTimeオブジェクトからタイムスタンプを取得する

<?php

/**
 * DateTimeInterface オブジェクトからタイムスタンプを取得するサンプルコード
 */

// DateTimeImmutable オブジェクトを作成
$date = new DateTimeImmutable('2024-10-27 10:30:00');

// date_timestamp_get() 関数を使用してタイムスタンプを取得
$timestamp = date_timestamp_get($date);

// 結果を出力
echo "タイムスタンプ: " . $timestamp . PHP_EOL;

?>

PHPのdate_timestamp_get関数は、DateTimeInterfaceオブジェクトからUnixタイムスタンプ(エポックからの秒数)を取得するために使用します。この関数はPHP 5.2以降で使用可能です。

引数には、タイムスタンプを取得したいDateTimeInterfaceオブジェクトを指定します。DateTimeInterfaceは、DateTimeクラスやDateTimeImmutableクラスなどが実装しているインターフェースです。これらのクラスのオブジェクトを引数として渡すことができます。

サンプルコードでは、まずDateTimeImmutableクラスを使用して、特定の日時(2024年10月27日10時30分00秒)を表すオブジェクトを作成しています。DateTimeImmutableは、オブジェクトの状態を変更できない不変な日時オブジェクトを作成する際に便利です。

次に、date_timestamp_get()関数にこのDateTimeImmutableオブジェクトを渡すことで、対応するUnixタイムスタンプを取得しています。取得されたタイムスタンプは整数値で、1970年1月1日00:00:00 UTCからの経過秒数を示します。

最後に、echoステートメントを使用して、取得したタイムスタンプを画面に出力しています。PHP_EOLは、改行コードを表す定義済みの定数で、出力を見やすくするために使用しています。

date_timestamp_get関数は、日時オブジェクトを数値として扱いたい場合に非常に役立ちます。例えば、日時の比較、データベースへの保存、または他のシステムとの連携などで、タイムスタンプが必要となる場面で使用できます。戻り値はint型の整数です。

date_timestamp_get()関数は、DateTimeInterfaceオブジェクトからUnixタイムスタンプ(秒単位の整数値)を取得する関数です。引数にはDateTimeImmutableまたはDateTimeオブジェクトを渡す必要があります。日付文字列を直接渡すことはできませんので、必ずDateTimeImmutableまたはDateTimeクラスを使ってオブジェクトに変換してください。この関数はPHP 5.2以降で使用可能です。戻り値は整数型のタイムスタンプですが、環境によっては整数型の範囲を超える可能性があるため、必要に応じて64bit整数として扱うことを検討してください。

【PHP8.x】date_timestamp_get関数の使い方 | いっしー@Webエンジニア