日付・時刻に関する関数 - PHPで日付・時刻の計算
目次
- PHPで日付・時刻の計算
- 日付・時刻に関する関数
- 年齢計算
- 今月のカレンダー
- 年月を指定できるカレンダー
- 予定表
- 予定表(単一ソース)
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-18 | 2003年9月18日 |
2003/09/18 | 2003年9月18日 |
09/18 | 今年の9月18日 |
3 day | 3日後 |
-2 day | 2日前 |
2 week | 2週間後 |
1 year | 1年後 |
1 week 2 day | 1週間と2日後 |
11:27:35 | 11時27分35秒 |
11:27 | 11時27分00秒 |
11 | 11時00分00秒 |
2003-09-18 11:27:35 | 2003年9月18日 11時27分35秒 |
4 hour | 4時間後 |
10 minute | 10分後 |
30 second | 30秒後 |
1 week 10 minute 30 second | 1週間と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です。