記事の冒頭で述べたように、この記事を書いた理由は、PHP で ASP のような DateDiff 関数が見つからないからです。 PHP が日付と時刻を処理する方法を紹介した後、ASP で一般的に使用される 2 つの関数を PHP に移植しましょう。最初の関数は DateAdd です。
Vbscript のドキュメントによると、DateAdd(interval,number,date) 関数は、「指定された時間間隔を加算した日付を返す」と定義されています。
Inetrval は、追加される時間間隔を表す文字列式です。分または日として、数値は追加される時間間隔の数を表す数値式です。日付は日付を表します。
間隔 (時間間隔の文字列式) は、次のいずれかの値です:
yyyy year
q 四半期
m 月
y 年間の日
d 日
w 平日
ww 年間の週
h 時間
n 分
s 2 つ目
w、y、d の関数はまったく同じです。つまり、現在の日付に 1 日を加算し、q は 3 か月を加算し、ww は 7 日を加算します。
?
関数 DateAdd ($interval, $number, $date) {
$date_time_array = getdate($date);
$ minutes = $date_time_array[" minutes"];
$秒 = $date_time_array["秒"];
$month = $date_time_array["月"];
$年 = $date_time_array["年"]; ($interval) {
ケース "yyyy": $year +=$number ブレーク;
ケース "q": $month +=($number*3);
case "m": $month +=$番号; ケース "y":
ケース "w": $day+=($number*7); "h": $時間+=$数値;
ケース "n": $秒+=$数値;
$timestamp = mktime; ,$分, $秒,$月,$日, $年);
return $timestamp;}
?
上記のコードを dateadd.inc ファイルとして保存し、次のコードを実行します。 ' dateadd.inc');
$temptime = time();
echo strftime( "%Hh%M %A %d %b",$temptime);
$temptime = DateAdd("n" ,50,$temptime) ) ;
echo "p";
echo strftime( "%Hh%M %A %d %b",$temptime);
6 月 3 日土曜日 15 時 41 分
6 月 3 日土曜日 16 時 31 分
を取得します。 PHP 関数
DateAdd が完成したので、DateDiff はどうすればよいでしょうか?
ドキュメントによると、DateDiff(interval, date1, date2) 関数は「2 つの日付の間の時間間隔を返す」と定義されています。
Intervals パラメーターの使用法は、DateAdd 関数の場合と同じです。過度の複雑さを避けるために、Vbscript の DateDiff 関数の他の複雑なパラメーター、つまり 2 つのオプションのパラメーター変数 [firstdayofweek[, firstweekofyear]] (これらは、週の最初の日が日曜日か日曜日かを判断するために使用されます) を無視することにしました。月曜日と年の最初の週の定数。間隔には次の 5 つの値のみが許可されます: "w" (週)、"d" (日)、"h" (時間)、"n" (分) . と "s" (秒)
何が考えられるかを見てみましょう: 次のコードが必要です:
Function DateDiff ($interval, $date1,$date2) {
// 2 つの日付を取得します。間の秒数
$timedifference = $date2 - $date1;
switch ($interval) {
case "w": $retval = bcdiv($timedifference ,604800);
case "d": $retval = bcdiv($timedifference,86400); ブレーク;
case "h": $retval = bcdiv ($timedifference,3600); ブレーク;
case "n": $retval = bcdiv($timedifference,60); "s": $retval = $timedifference;
}
return $retval;}
?
上記のコードを datediff.inc ファイルとして保存し、次のコードを実行します。 );
include('dateadd.inc');
$currenttime = time();
echo "現在の時刻: ".strftime("%Hh%M %d %b" ,$currenttime) ;
$newtime = DateAdd ("n",50 ,$currenttime);
echo "時間プラス 50 分: ".strftime("%Hh%M %A %d %b" ,$newtime) ;
$temptime = DateDiff ("n",$currenttime ,$newtime);
echo "2 つの時刻の間の間隔: ".$temptime;
すべてがうまくいけば、次の結果が表示されます:
現在時刻: 16h23 6月3日土曜日
時間+50分: 17時13分 6月3日土曜日
2つの時間の間隔: 50
Unix マシンで PHP を実行している場合は、BC 高精度関数をサポートするように PHP をコンパイルする必要があります。次のアドレス http://www.php.net/extra/number4.tar.gz から BC ライブラリをダウンロードし、PHP4 のルート ディレクトリに解凍し、PHP を再コンパイルして、コンパイル時に --enable- を追加する必要があります。 bcmath のオプション。 (詳細な手順については、PHP4 の README.BCMATH を参照してください)。 Windows 版 PHP4 では、BC の高精度関数をパッチなしで直接使用できます。
日付と時刻を処理する関数が完成したので、あとはそれらを PHP プログラムに適用する方法だけです。
PHP 時間表示例
参加時間: 2004-12-18 17:22:53 サイズ: 1 KB 読み取り数: 1564
最初のタイプ: シンプル (学習用)
$today=date( "Y-m-d G:i:s");
echo "