現在の時刻を表示する
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()関数は現在の時刻をタイムスタンプで取得する関数です。
1970年1月1日0時0分0秒(GMT:グリニッジ世界標準時)からの秒数です。PHPは日付、時刻を「秒」で管理しています。
タイムスタンプを生成する
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()関数は「サマータイムオプション」から左へすべて省略できますが、後から見たときにわかりにくくなるので、年月日時分秒は記述することをお勧めします。
<?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); ?>
<?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); ?>