PHP SCHOOL.biz

PHPの学習をする為のブログです。プログラム未経験の方にも理解できるよう基本的な、PHPの知識について身に付けることができるようにわかりやすい内容にしていきたいと思っています。


PHPでの日付と時刻

PHPのdate()関数は、日付および時刻の書式設定に使用されます。

PHPのdate()関数

PHPのdate()関数はタイムスタンプをより読みやすい日付と時刻を表示することが出来ます。

文法


date(format,timestamp)

パラメータ 説明
format 必須。タイムスタンプの形式を指定します。
timestamp 任意。タイムスタンプを指定します。デフォルトは現在の日付と時刻です。

単純な日付をPHPで表示しよう。

date()関数の必須のformatパラメータは、日付(または時刻)をフォーマットする方法を指定します。

ここで、日付のためによく使われるいくつかの文字を紹介します。

d - 月の日(01〜31)を表します。
m - 月を表します(01〜12)
Y - 年を表します(4桁)
l(小文字の「L」) - 曜日を表します

"/"、 "。"、 " - "などの他の文字を文字の間に挿入して、追加の書式を追加することもできます。

以下の例では、今日の日付を3つの異なる方法でフォーマットしています。

<?php
echo "Today is " . date("Y/m/d") . "<br>";
echo "Today is " . date("Y.m.d") . "<br>";
echo "Today is " . date("Y-m-d") . "<br>";
echo "Today is " . date("l");
?>

実行結果

PHPで©の年度を自動的に変更するためのヒント。

PHPのdate()関数を使用して、ウェブサイトの著作権年度を自動的に更新することができます。

&copy; 2010-<?php echo date("Y");?>

実行結果

PHPで時刻を表示してみよう。

ここでdate()関数を使用し時刻を取得する際に、一般的に使用されるいくつかの文字を紹介します。。

h - 先行ゼロ(01〜12)を含む1時間の12時間形式
i - 先行ゼロのある分(00〜59)
s - 先行ゼロのある秒(00〜59)
a - 小文字のamまたはpm
次の例では、指定された形式で現在時刻を出力しています。

<?php
echo "The time is " . date("h:i:sa");
?>

実行結果

PHPのdate()関数は、サーバの現在の日付/時刻を返します。

ニューヨークの現在日時を表示してみよう

上の例のスクリプトで戻った時間が適切でない場合は、サーバーが別の国にいるか、別のタイムゾーンに設定されている可能性があります。
したがって、特定の場所に応じて時間が必要な場合は、使用するタイムゾーンを設定できます。

以下の例では、タイムゾーンを "America / New_York"に設定し、指定された形式で現在時刻を出力します。

<?php
date_default_timezone_set("America/New_York");
echo "The time is " . date("h:i:sa");
?>

実行結果

mktime()関数を使用して日付を作成してみよう

date()関数のオプションのtimestampパラメータは、タイムスタンプを指定します。タイムスタンプを指定しないと、(上記の例に示すように)現在の日付と時刻が使用されます。
mktime()関数は、日付のUnixタイムスタンプを返します。 Unixタイムスタンプには、Unix Epoch(1970年1月1日00:00:00 GMT)から指定された時間までの秒数が入ります。

文法

mktime(hour,minute,second,month,day,year)

次の例では、mktime()関数のパラメータの設定から日時を作成しています。

<?php
$d=mktime(11, 14, 54, 8, 12, 2014);
echo "Created date is " . date("Y-m-d h:i:sa", $d);
?>

実行結果

strtotime()関数を使用して日付を取得しよう

PHPのstrtotime()関数は人間が読める文字列をUnixの時刻に変換するために使われます。

文法

strtotime(time,now)

次の例は、strtotime()関数から日付と時刻を作成します。

<?php
$d=strtotime("10:30pm April 15 2014");
echo "Created date is " . date("Y-m-d h:i:sa", $d);
?>

実行結果

PHPは、文字列を日付に変換することに関して賢いので、さまざまな値を入れることができます(英語)。

<?php
$d=strtotime("tomorrow");
echo date("Y-m-d h:i:sa", $d) . "<br>";

$d=strtotime("next Saturday");
echo date("Y-m-d h:i:sa", $d) . "<br>";

$d=strtotime("+3 Months");
echo date("Y-m-d h:i:sa", $d) . "<br>";
?>

実行結果

もう少し、日付を取得した例を見てみましょう。

以下の例は、次の6つの土曜日の日付を出力します。

<?php
$startdate = strtotime("Saturday");
$enddate = strtotime("+6 weeks", $startdate);

while ($startdate < $enddate) {
  echo date("m - d", $startdate) . "<br>";
  $startdate = strtotime("+1 week", $startdate);
}
?>

実行結果

以下の例は、1月1日までの日数を出力します。

<?php
$d1=strtotime("July 04");
$d2=ceil(($d1-time())/60/60/24);
echo "There are " . $d2 ." days until 4th of July.";
?>

実行結果

これで、日付関連の学習は、終了です。
時間があれば、日付関連の詳細なリファレンスでも作ってみようと思います。