PHPプログラミング

レシピ

日付・時間の扱い

日付/時刻を取得する:date関数

日付を取得するのに便利なdate関数の基本的な使い方を解説します。

この記事のポイント

  • 現在の時刻から様々な形式で日時を取得する
  • タイムスタンプから日時を取得する
  • 文字列形式の時刻から日時を取得する

目次

システム開発でほぼ必須となる日付/時刻

システムの開発において、必ず使うと言っても過言ではない日時の取り扱い。
今回はPHPで日付を取得するときによく使われるdate関数の基本的な扱い方をみていきます。

現在の時刻から、様々な形式で日時を取得する

まずはdate関数について。
この関数は、次の2種類のパラメータを指定することができます。

date関数の基本的なコード例

date( $format, $timestamp);

2つ目のパラメータ「$timestamp」は任意です。
もし指定がない場合は、現時刻から1つ目で指定したフォーマットで時刻を取得します。

フォーマットは様々な形式を指定することができます。
下記のコードでは、その一部をご紹介します。
※「2017年08月01日 9時15分11秒」に実行したと仮定

コード例

<?php
// 日付のタイムゾーンを設定
date_default_timezone_set('Asia/Tokyo');

echo date("Y-m-d H:i:s"); // 2017-08-01 09:15:11
echo date("y年n月j日 H時i分"); // 17年8月1日 09時15分
echo date("l"); // Tuesday
echo date("D"); // Tue (曜日を3文字の文字列で取得。頭文字は大文字)
echo date("w"); // 2 (日曜=>0、月曜=>1、火曜=>2,水曜=>3,木曜=>4,金曜=>5,土曜=>6)
echo date("N"); // 2 (月曜=>1、火曜=>2,水曜=>3,木曜=>4,金曜=>5,土曜=>6,日曜=>7)
echo date("t"); // 31 (その月の日数を取得)
echo date("F"); // August (月のスペルを取得)
echo date("M"); // Aug (月のスペルを3文字形式で取得)

PHPはサーバーで実行されるため、初期設定のタイムゾーンはシステム環境の設定(UTCなど)を基準に日時を取得します。
日本の時刻を取得したい場合は、必ずタイムゾーンの設定を行ってください。
(タイムゾーンの設定については「タイムゾーンを取得 / 設定する」をご覧ください)

なお、システム環境の標準タイムゾーンを知りたい場合は、date_default_timezone_get関数から取得することができます。

フォーマットはこの他にも様々な指定をすることができます。
使いたいフォーマットが上記にない場合は、php.netの下記のページを参照してください。
date関数 – php.net

タイムスタンプから日時を取得する

現時刻だけではなく、タイムスタンプを使って日時を指定した上で、希望するフォーマットでの出力も可能です。
時刻は先ほどと同じ「2017年08月01日 9時15分11秒」をタイムスタンプ形式にした「1501546511」を使います。

コード例

<?php

$timestamp = '1501546511';

echo date("Y-m-d H:i:s", $timestamp); // 2017-08-01 09:15:11
echo date("y年n月j日 H時i分", $timestamp); // 17年8月1日 09時15分
echo date("l", $timestamp); // Tuesday
echo date("w", $timestamp); // 2
echo date("t", $timestamp); // 31

文字列の日時から、日時を取得する

データベースやCSVなどから取得した日時のデータは文字列型であるケースが多いです。
その場合は、strtotime関数を使って一旦タイムスタンプへ変換してから、date関数の第2パラメータとして渡します。

コード例

<?php

$date = '2017-12-01';

// タイムスタンプへ変換
$timestamp = strtotime($date);

echo date("Y-m-d H:i:s", $timestamp); // 2017-12-01 00:00:00
echo date("y年n月j日 H時i分", $timestamp); // 17年12月1日 00時00分
echo date("l", $timestamp); // Friday
echo date("w", $timestamp); // 5
echo date("t", $timestamp); // 31

strtotime関数は、文字列形式で渡した日付をタイムスタンプへ変換してくれる便利な関数です。
もしデータが日付のみで時刻の指定がない場合は、自動的に「00:00:00」が設定されます。
また、「2017年12月1日」などの日本語を指定することはできません。

以上、日付を取得するdate関数の基本的な使い方でした。

こちらの記事は役に立ちましたか?

ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。

ありがとうございます。
コメントを送信しました。