PHP基礎_日付と時刻

PHPには、日付と時刻操作する関数があらかじめ用意されています。

getdate()関数

今日の日付(時間)を求めます
【構文】

getdate (timestamp)

getdate()関数は、次の文字列を要素とする連想配列を返します。

second 現在の秒
minutes 現在の分
hours 現在の時間
mday 現在の日
wday 現在の曜日番号
mon 現在の月
year 現在の年
yday その年の通算日
weekday テキスト形式の曜日
month テキスト形式の月

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");
?>
2024/11/23
2024/11/23 21:13:00 pm
24/11/23 21:13:00
2024 November Saturday

【サンプル】カレンダー

<?php
//今日の日付を取得
$today = getdate();
$yyyy = $today[year];//年
$mm = $today[mon];//月
$dd = $today[mday];//日

// カレンダーを表示する
 echo "<p><img src='line_heart.gif'>";
 echo "<table>";
 echo "<tr align='center'><td colspan='7'>$yyyy 年 $mm 月</td></tr>";
 echo "<tr>";
 echo "<td width='20'>日</td>";
 echo "<td width='20'>月</td>";
 echo "<td width='20'>火</td>";
 echo "<td width='20'>水</td>";
 echo "<td width='20'>木</td>";
 echo "<td width='20'>金</td>";
 echo "<td width='20'>土</td>";
 echo "</tr>";

// 1日の曜日を取得する
$wd1 = date("w", mktime(0, 0, 0, $mm, 1, $yyyy));
 $d = 0;
 $lastd = date("d", mktime(0, 0, 0, $mm + 1, 0, $yyyy));

for ($i = 0; $i <= 5; $i++) {
 if ($d > $lastd) {break;}
 echo "<tr>";
 for ($j = 0; $j <= 6; $j++) {
 $d = $i * 7 + $j - $wd1 + 1;
 if ($d > $lastd or $d < 1) {
 echo "<td> </td>";
 }
 //今日の日付の場合はセルに色をつける
else {
 if ($d == $dd ) {
 echo "<td align='center' bgcolor='#efb457'>$d</td>";
 }
 else {
 echo "<td align='center'>$d</td>";
 }
 }
 }
 echo "</tr>";
 }
 echo "</table>";
 echo "<p><img src='line_heart.gif'>";
?>

2024 年 11 月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
             

mktime()関数

指定日した日数後の日付を求めることができます。
日のパラメータを「指定日+経過日数」とすると、経過日数後の日付を求めることができます。

【サンプル】

<?php
 //本日の日付
 $today = getdate();
 $yyyy = $today[year];
 $mm = $today[mon];
 $dd = $today[mday]; 
//間隔日数
$kankaku = 30;

//タイムスタンプを取得
$date = date("Y/m/d", mktime(0,0,0, $mm,$dd + $kankaku,$yyyy));
 echo "$yyyy 年 $mm 月 $dd 日 の $kankaku 日後 → ".$date ;
 ?>
2024 年 11 月 23 日 の 30 日後 → 2024/12/23

mktime()関数で、「日」に「0」を指定すると、前月末の日付を取得することができます。「月」+1で、今月末を求めることができます。

【サンプル】

<?php
 //今日の日付を求める
 $today = getdate();
 $yyyy = $today[year];
 $mm = $today[mon];
 $kongetu = $mm + 1;

 $date = date("Y/m/d", mktime(0,0,0, $mm,0,$yyyy));
 echo "$yyyy 年 $mm 月 1 日 の 前日 → ".$date."(前月末)" ;

 $date = date("Y/m/d", mktime(0,0,0, $mm + 1,0,$yyyy));
 echo "<p>$yyyy 年 $kongetu 月 1 日 の 前日 → ".$date."(今月末)" ;
 ?>
2024 年 11 月 1 日 の 前日 → 2024/10/31(前月末)

2024 年 12 月 1 日 の 前日 → 2024/11/30(今月末)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です