PHPの時間関数

WBOY
リリース: 2016-06-23 14:30:09
オリジナル
1186 人が閲覧しました

記事の冒頭で述べたように、この記事を書いた理由は、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 "

$today
";
?>



2 番目のタイプ:
/*
形式時間
*/
関数 formatTime( $ time,$type="1"){
switch($type){
case 1;#2002-06-0418:58 Tuesday
return date("Y.m.d H:i",$time)." 質問してください。 90日後の日付

参加時間: 2004-12-18 18:09:53 サイズ: 1 KB 読み取り数: 158
//今日の時刻情報を取得します
$Y=date(Y);
$m =date( m);
$d=date(d);
//$m は月、$d は日、$Y は年、「+」記号は後を示し、方法を取得するには「-」記号を使用します何日前 日付「Y年m月d日」は単なる表示形式なので、「Y-m-d」に変更できます
$out_date1=date( "Y年m月d日", mktime(0,0 ,0,$m ,$d+7,$Y) );//1週間後
$out_date2=date( "Y年m月d日", mktime(0,0,0,$m,$d+ 14,$Y) ) ;//2週間後
$out_date3=date( "Y年m月d日", mktime(0,0,0,$m+1,$d,$Y) );// 1ヶ月後
$out_date4 =date( "Y年m月d日", mktime(0,0,0,$m+2,$d,$Y) );//2ヶ月後
$out_date5=date( "Y年m月d日", mktime(0,0,0,$m+3,$d,$Y) );//3ヶ月後
$out_date6=date( "Y年m月d日", mktime(0, 0,0,$m+6,$d,$Y) );//6ヶ月後
$out_date7=date( "Y年m月d日", mktime(0,0,0,$ m,$ d,$Y+1) );//1 年後

echo date("Ymd", time() + 90*86400);
echo date("Y-m-d",strtotime("2004-10- 26 +90 日 "));
date("Y-m-d",strtotime("+90 日"));

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート