ポンクソフト

日付・時刻に関する関数 - PHPで日付・時刻の計算

前ページ PHPで日付・時刻の計算 TOP 次ページ

目次

  1. PHPで日付・時刻の計算
  2. 日付・時刻に関する関数
  3. 年齢計算
  4. 今月のカレンダー
  5. 年月を指定できるカレンダー
  6. 予定表
  7. 予定表(単一ソース)

time関数

現在のUNIXタイムスタンプを返す関数です。

説明

int time(void)
現在時刻をUnix epoch(1970年1月1日 00:00:00 GMT)からの通算秒として返します。

サンプル

print time();
以下のような数値が出力されます。
1063785395

date関数

日付・時刻を書式化する関数です。

説明

string date(string format [, int timestamp])
引数 timestamp で指定されたUNIXタイムスタンプを、与えられたフォーマット文字列によりフォーマットし、日付・時刻文字列を返します。 timestamp が省略された場合は現在の時刻、つまり time() の値が使われます。

よく使われるフォーマット文字

 説明戻り値の例
a午前または午後(小文字)am または pm
A午前または午後(大文字)AM または PM
d日。二桁の数字01 から 31
g時。12時間単位。先頭にゼロを付けない。1 から 12
G時。24時間単位。先頭にゼロを付けない。0 から 23
h時。数字。12 時間単位。01 から 12
H時。数字。24 時間単位。00 から 23
i分。先頭にゼロをつける。00 から 59
j日。先頭にゼロをつけない。1 から 31
L閏年であるかどうかを表す論理値。1 なら閏年。0 なら閏年ではない。
m月。数字。先頭にゼロをつける。01 から 12
n月。数字。先頭にゼロをつけない。1 から 12
s秒。先頭にゼロをつける。00 から 59
t指定した月の日数。28 から 31
w曜日。数値。0 (日曜)から 6 (土曜)
Y年。4 桁の数字。例: 1999 や 2003
y年。2 桁の数字。例: 99 や 03

サンプル

print date("Y年m月d日 H時i分s秒", time());
以下のように現在時刻がフォーマットされて出力されます。
2003年09月18日 10時52分31秒
現在時刻をフォーマットする場合は以下のように timestamp を省略できます。
print date("Y年m月d日 H時i分s秒");

strtotime関数

フォーマットされた日時をUNIXタイムスタンプに変換する関数です。

説明

int strtotime(string time)
引数 time にフォーマットされた日付・時刻文字列を指定して関数を呼び出すと、UNIXタイムスタンプへ変換して返します。失敗すると-1を返します。
データベースの日付・時刻・タイムスタンプ型などからUNIXタイムスタンプを取得したいときなどに便利です。

よく使われるフォーマットの例

文字列意味
2003-09-182003年9月18日
2003/09/182003年9月18日
09/18今年の9月18日
3 day3日後
-2 day2日前
2 week2週間後
1 year1年後
1 week 2 day1週間と2日後
11:27:3511時27分35秒
11:2711時27分00秒
1111時00分00秒
2003-09-18 11:27:352003年9月18日 11時27分35秒
4 hour4時間後
10 minute10分後
30 second30秒後
1 week 10 minute 30 second1週間と10分30秒後

サンプル

print strtotime("2003-09-18 11:27:35");
以下のように出力されます。
1063852055
また、以下のように日付を分かりやすい形式に変換するのにも使えます。
print date("Y年m月d日 H時i分s秒", strtotime("2003-09-18 11:27:35"));
以下のように出力されます。
2003年09月18日 11時27分35秒

mktime関数

引数で指定された日時をUNIXタイムスタンプとして取得する関数です。

説明

int mktime(int hour, int minute, int second, int month, int day, int year)
与えられた引数に従ってUNIXタイムスタンプを返します。引数は右から順に省略することが可能で、省略されると現在日時に設定されます。

サンプル

print mktime(10, 22, 30, 5, 1, 2003);
以下のように 2003/5/4 10:22:30 をUNIXタイムスタンプにしたものが出力されます。
1051752150
また、以下のようにしても同じ値が出力されます。
print mktime(10, 22, 30, 4, 31, 2003);
なぜなら、mktime関数には、日付や時刻に大きい値を指定しても、繰り上げて正常な日時に直してくれる機能があるからです。
例えば、今年の2月の最後の日を表示したければ
print date("d", mktime(0, 0, 0, 3, 0));
とすればOKです。
前ページ PHPで日付・時刻の計算 TOP 次ページ
このエントリーをはてなブックマークに追加 そっか0