前回の記事「PHPで指定月の日数を求める方法」では、switch case文を使って特定月の最大日数を取得する方法を紹介しました。 switch case ステートメントでは、2 月については、最大日数を取得する前に、まずその年が閏年であるかどうかを判断する必要がありますが、これは少し面倒です。
では、特定の月の日数を簡単かつ効率的に計算し、特定の年または月の最大日数を取得するにはどうすればよいでしょうか?実際、PHP の組み込み date() 関数がこの問題を解決できます。
date() 関数は、指定された Unix タイムスタンプをローカルの日付と時刻にフォーマットできます。出力フォーマットを "t
" に設定するだけで、タイムスタンプに含まれる日数が返されます。与えられた月です。
試してみましょう:
<?php header("Content-type:text/html;charset=utf-8"); $time="2000-2"; $date=date("t",$time); echo "$time 月共有 $date 天<br>"; ?>
出力を見てください:
エラー報告の最大日数と出力 いいえ、これはなぜですか?戻って上記を確認すると、次のことがわかります。
date() 関数で受け入れられる $time
パラメータは、Unix タイムスタンプ## の日付と時刻である必要があります。 # format, we need to 文字列型 time "2000-2" は Unix タイムスタンプ形式に解析されます。
<?php header("Content-type:text/html;charset=utf-8"); $i="2000-2"; $time=strtotime("$i"); //取得一个日期的 Unix 时间戳; $date=date("t",$time); echo "$i 月共有 $date 天<br>"; ?>出力を見てみましょう: 2000 年はうるう年であるため、 2月は全部で29日あります。わかりました!出力は正しいです。 これを関数関数として記述します。
<?php function GetMaxDay($year,$month){ $time = strtotime("{$year}-{$month}"); //取得一个日期的 Unix 时间戳; $date=date("t",$time); echo "$year 年 $month 月共有 $date 天<br>"; } ?>Call
GetMaxDay($year,$month)特定の年と月の最大日数を取得します
GetMaxDay(1996,2); GetMaxDay(2000,2); GetMaxDay(2001,2); GetMaxDay(2001,3); GetMaxDay(2001,4);出力結果は次のとおりです: 実際、日付を解析して日付の UNIX タイムスタンプを返すことができるのは、PHP の strtotime() 関数だけではありません。 )機能も使えます。 GetMaxDay() 関数を書き直し、mktime() 関数を使用して日付の Unix タイムスタンプを取得しましょう
<?php header("Content-type:text/html;charset=utf-8"); function GetMaxDay($year,$month){ $time = mktime(20,20,20,$month,1,$year); //取得一个日期的 Unix 时间戳; $date=date("t",$time); echo "$year 年 $month 月共有 $date 天<br>"; } GetMaxDay(1996,2); GetMaxDay(2000,2); GetMaxDay(2001,2); GetMaxDay(2001,3); GetMaxDay(2001,4); ?>出力結果は次のとおりです: これは次のようになります:
mktime(20,20,20,$month,1,$year)関数は 6 つのパラメーター、つまり時間、分、秒を指定する必要があります。 、 月日年。時、分、秒は任意に設定でき、月と年は指定した
$month と
$year で、日数は 1 に設定できます (値が 28 を超えない限り、問題ありません)。
以上がPHP 関数を使用して、特定の年および月の最大日数を計算する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。