PHPプログラミング

最終更新日:
公開日:

レシピ

日付・時刻

指定した日時のタイムスタンプを取得する

strtotime関数を使って、特定の日時の文字列からタイムスタンプを取得する方法について解説します。

この記事のポイント

  • 文字列の時刻からタイムスタンプを取得する
  • 使用できる時刻フォーマットを確認する

目次

文字列の日時からタイムスタンプを取得する

strtotime関数に文字列で日付を渡すと、その時刻のタイムスタンプを取得することができます。

コード例

strtotime("2018-01-25");

出力結果

int(1516806000)

取得したタイムスタンプはdate関数などで簡単に特定のフォーマットで表示することができます。

コード例

// 日付からタイムスタンプを取得
$timestamp = strtotime("2018-01-25");

// 指定したフォーマットで出力
echo date("Y-m-d H:i:s", $timestamp);

出力結果

2018-01-25 00:00:00

日付のみを取得した場合、時刻の部分は一律で「00:00:00」となります。

使用できる時刻フォーマット

strtotime関数では時刻の文字列をタイムスタンプに変換するに当たって、特定のフォーマットである必要があります。

コード例

// OK
$timestamp = strtotime("2018-01-25");
$timestamp = strtotime("2018-01-25 01:15:00");
$timestamp = strtotime("2018/1/25 01:15:00");
$timestamp = strtotime("2018-Jan-20 01:15:00");

// NG
$timestamp = strtotime("2018.01.25 01:15:00");
$timestamp = strtotime("2018年01月25日 01:15:00");

日付の区切りが「 (ハイフン)」や「/ (スラッシュ)」は正常に変換できますが、「. (ドット)」や日本語で「年月日」と書かれた日付については変換ができません。
よって、MariaDBなどのデータベースでよく使用されるフォーマットの日付(2018-01-10 01:22:33など)は日付を文字列のまま渡せばタイムスタンプに変換することができます。

strtotime関数で指定できる時刻は、PHPがサポートする時刻フォーマットに則っています。
より詳しくは、php.netの下記ページをご覧ください。
サポートする日付と時刻の書式 – php.net