PHPには、日付と時刻操作する関数があらかじめ用意されています。
getdate()関数
今日の日付(時間)を求めます。
《構文》
getdate (timestamp) |
getdate()関数は、次の文字列を要素とする連想配列を返します。
second | 現在の秒 |
minutes | 現在の分 |
hours | 現在の時間 |
mday | 現在の日 |
wday | 現在の曜日番号 |
mon | 現在の月 |
year | 現在の年 |
yday | その年の通算日 |
weekday | テキスト形式の曜日 |
month | テキスト形式の月 |
《サンプル》
<?php $today = getdate(); echo ("今日の日付は $today[year]年$today[mon]月$today[mday]日<br>\n"); echo ("$today[weekday] $today[month]/$today[mday]/$today[year]<br>\n"); echo ("今年の1月1日から $today[yday]日目です"); ?> |
《実行結果》
今日の日付は 2025年4月29日 Tuesday April/29/2025 今年の1月1日から 118日目です |
date()関数
引数で与えた日付を指定するフォーマットの文字列に変換します。
a | am または pm |
A | AM または PM |
d | 2桁の日付(01〜31) |
D | 3文字の曜日 (Sun 〜 Sat) |
F | フルスペルの英字の月(January〜December) |
h | 12時間単位 (00 〜 12) の時間 |
H | 24時間単位 (00 〜 23) の時間 |
g | 先頭に 0 をつけない12時間単位 (0 〜 12) |
G | 先頭に 0 をつけない24時間単位 (0 〜 23) |
I | 2桁の分 (00 〜 59) |
j | 先頭に 0 をつけない (0 〜 31)の日 |
l | フルスペルの英字で曜日(Sunday〜Saturday) |
L | 閏年では 1 を、それ以外は 0 を返す |
n | 先頭に 0 をつけない (0 〜 12) の月 |
m | 2桁のの月 (01 〜 12) |
M | 3文字の月 (Jan 〜 Dec) |
s | 2桁の秒 (00 〜 59) |
S | 英文の序数を表わす接尾語 (th 〜 nd) |
t | 指定した月の日数 (28 〜 31) |
U | UNIX時間 (1970年1月1日からの秒数) |
w | 数値で示す曜日 (0 〜 6) |
y | 西暦の下2桁を示す年 |
Y | 西暦を4桁で示す年 |
z | その年の1月1日からの通算日 |
Z | タイムゾーンのオフセット秒 ( -43200 〜 43200まで) |
《サンプル》
<?php $hiduke = date("Y/m/d"); echo ("$hiduke<br>\n"); $hiduke = date("Y/m/d H:i:s a"); echo ("$hiduke<br>\n"); $hiduke = date("y/n/j G:i:s"); echo ("$hiduke<br>\n"); $hiduke = date("Y F l"); echo ("$hiduke<br>\n"); ?> |
《実行結果》
2025/04/29 2025/04/29 16:12:19 pm 25/4/29 16:12:19 2025 April Tuesday |
日付要素からタイムスタンプを取得する
mktime()関数を使うと、日付/時刻からタイムスタンプ(経過日数/時数)を計算してくれます。
<?php //日付と時刻を設定 $hour = 11; $minute = 59; $second = 59; $mm = 11; $dd = 5; $yyyy = 2005; //タイムスタンプを取得 //日付を省略したタイムスタンプ |
指定日した日数後の日付を求める
mktime()関数を使って、日のパラメータを「指定日+経過日数」とすると、経過日数後の日付を求めることができます。
<?php //本日の日付 $today = getdate(); $yyyy = $today[year]; $mm = $today[mon]; $dd = $today[mday]; //間隔日数 //タイムスタンプを取得 |
月末の日付を求める
mktime()関数で、「日」に「0」を指定すると、前月末の日付を取得することができます。「月」+1で、今月末を求めることができます。
<?php
$date = date("Y/m/d", mktime(0,0,0, $mm + 1,0,$yyyy)); |