戻る

日付を扱うPHP関数

date()関数

現在の時刻を表示する

date関数の構文

日付フォーマットに従った日付文字列 = date(日付フォーマット,[タイムスタンプ])

string date ( string $format [, int $timestamp = time() ] )

以下のように記述すると、日時が得られますが、XAMPPの初期設定では日本の時刻が得られません。

<?php
header("Content-type: text/html; charset=utf-8");

echo date("Y/m/d H:i:s");
?>

そこでphp.iniの設定を変更します。

php.iniでタイムゾーンをAsia/Tokyoに変更してApacheを再起動します。

;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Asia/Tokyo

もしくはphp.iniの設定が変更できない環境であれば、以下のように記述します。

<?php
header("Content-type: text/html; charset=utf-8");

date_default_timezone_set('Asia/Tokyo');

echo date("Y/m/d H:i:s");
?>

月日などの区切りの「/」「:」などのプログラムで直接記述した、フォーマット文字以外の文字列はそのまま使われます。

年月日
y 西暦年2桁 99または11
Y 西暦年4桁 1999または2011
m 月数字2桁 01~12
n 月数字(0をつけない) 1~12
F 月英字(フル) January~December
M 月英字(3文字) Jan~Dec
d 日2桁数字 01~31
j 日数字(0をつけない) 1~31
時分秒
h 時(12時間単位) 01~12
H 時(24時間単位) 00~23
g 時(12時間単位、0をつけない) 1~12
G 時(24時間単位、0をつけない) 0~23
i 分2桁数字 00~59
s 秒2桁数字 00~59
曜日
W 曜日数字 0(日曜)~6(土曜)
N 曜日数字 1(月曜)~7(日曜)
I 曜日英字(フル) Sunday~Saturday
D 曜日英字(3文字) Sun~Sat
午前/午後
a 午前/午後(小文字) am/pm
A 午前/午後(大文字) AM/PM
その他
L うるう年 1:うるう年、0:うるう年ではない
l サマータイム 1:サマータイム、0:サマータイムではない
t 月の日数 28、29、30、31
z 1月1日からの通算日 0~365
W 年単位の週番号(月曜日から) 10のとき:年の第10週目
S 英文の序数を表す語 st、nd、rdまたはth。jと一緒に使用する

time()関数

time()関数は現在の時刻をタイムスタンプで取得する関数です。

タイムスタンプ

1970年1月1日0時0分0秒(GMT:グリニッジ世界標準時)からの秒数です。PHPは日付、時刻を「秒」で管理しています。

mktime()関数

タイムスタンプを生成する

mktime()関数の構文

タイムスタンプ = mktime(時間,分,秒,月,日,年[,サマータイムオプション]);

int mktime ([ int $hour = date("H") [, int $minute = date("i") [, int $second = date("s") [, int $month = date("n") [, int $day = date("j") [, int $year = date("Y") [, int $is_dst = -1 ]]]]]]] )

mktime()関数のオプション

mktime()関数は「サマータイムオプション」から左へすべて省略できますが、後から見たときにわかりにくくなるので、年月日時分秒は記述することをお勧めします。

5日後を知りたい場合

<?php
header("Content-type: text/html; charset=utf-8");

//今日の日付
$y = date("Y");
$m = date("m");
$d = date("d");

//5日後のタイムスタンプを取得
$after_5day = mktime(0,0,0,$m,$d+5,$y);

//date関数に5日後のタイムスタンプを指定
echo date("Y年m月d日",$after_5day);

?>

4年3が月前を知りたい場合

<?php
header("Content-type: text/html; charset=utf-8");

//今日の日付
$y = date("Y");
$m = date("m");
$d = date("d");

//4年3か月前のタイムスタンプを取得
$before_43 = mktime(0,0,0,$m-3,$d,$y-4);

//date関数に5日後のタイムスタンプを指定
echo date("Y年m月d日",$before_43);

?>

前月の最終日を知りたい場合

今月の0日を指定すると、先月の最終日を取得することになります。

<?php
header("Content-type: text/html; charset=utf-8");

//今日の日付
$y = date("Y");
$m = date("m");
$d = date("d");

//前月の最終日を取得
$last_date = mktime(0,0,0,$m,0,$y);

//date関数に前月の最終日のタイムスタンプを指定
echo date("Y年m月d日",$last_date);

?>

inserted by FC2 system