ホームページ  >  記事  >  バックエンド開発  >  PHPデータ処理関数_PHPチュートリアル

PHPデータ処理関数_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-21 14:53:20753ブラウズ

この記事には次の内容が含まれます:
1. 現在の日付と時刻を取得する方法は何通りありますか?
2. 日付の表示方法 - 日付と時刻の表示方法を変更します
3. 現在の日付を Unix タイムスタンプ値に変換します
4. 日付を変更します
a. 時間を追加します
b. 時間を減算します
c. 2 つの日付間の間隔を求めます
5. PHPにDateAdd関数を追加
6. PHPにDateDiff関数を追加

**現在の日付と時刻を取得します

UNIX では、1970 年 1 月 1 日の 0:00 からの経過秒数を計算して時刻を表します。これを UNIX タイムスタンプ (Unix Epoch) と呼びます。
次のようなコードがあるとします:

1. は値 958905820 を返します。この時点の時刻は 2000 年 5 月 21 日の 12:43 です。

これはかなり良いと言えるかもしれません。これではまったく役に立たない、またはほんの少ししか役に立たないとき。 PHP では、すべての日付処理関数で time() によって返されるタイムスタンプ値を使用する必要があります。同時に、PHP は Unix と Windows システムの両方で同じタイムスタンプ値を使用するため、コードを変更せずに異なるシステム間で PHP を移植できます。もう 1 つの利点は、time() 関数が整数を返すため、特別な日付/時刻フィールドを使用せずに、整数フィールドまたはテキスト フィールドとしてデータベースに格納できることです。

Unix タイムスタンプ値の基本は理解できたので、実際にそれを示してみましょう。

日付の表示方法を変更する - 日付と時刻の表示形式を変更します

PHP は、Unix タイムスタンプ値を有用なデータに変換する 2 つの方法を提供します。 1 つ目は date() 関数です。この関数は 2 つのパラメータを取ります。最初の文字列は返したい形式を設定するために使用され、2 番目の文字列は Unix タイムスタンプ値です。
書式文字列では、単純な特殊な書式設定文字を使用して、表示したい形式で日付と時刻を表示します。日付を「18:01 Sunday 21 May」という形式で表示したいとします。
文字列の各部分に特別な書式設定文字を使用する必要があります。これは、PHP マニュアルの日付と時刻の関数ライブラリにあります。このような特殊な書式設定文字は、曜日、月の英語名、2 桁または 4 桁で表される年、午前 (AM) か午後 (PM) などを表します。この例に必要な特殊文字は次のとおりです:
「H」 – 24 時間形式の時間
「i」 - 分
「l」 - 曜日の完全な英語名
「d」-月の日
「F」 - 月の完全な英語名

つまり、フォーマット文字列は「Hhi l d F」で、PHP コードは次のようになります:

1.

この結果は少し奇妙に見えます。もう一度 PHP のマニュアルを確認してみましょう。「h」は 12 時間制の時間を表していることがわかります。これは再び真実を証明します。「コンピューターは、ユーザーが実行してほしいことを実行するのではなく、ユーザーが実行するよう指示したことだけを実行します。」選択肢は 2 つあります。 1 つ目は、h の前にエスケープ文字「」を使用することです: echo date ("Hhi l d F", time());

次の結果が得られます: 5 月 21 日日曜日 18 時 12 分

これはまさに私たちが望んでいることです。しかし、非常に複雑な文に日付と時刻を含める必要がある場合、各文字にエスケープ文字を使用する必要があるでしょうか? 答えはもちろんノーです。別の関数 strftime() を使用します。


strftime() には 2 つの利点があります。最初の利点は、この記事の範囲を超えています。setlocale() 関数を使用すると、strftime を通じて対応する言語で月の名前を取得できます。追加の利点は、文字列に特別な日付と時刻の書式設定文字を含めることができることです。これは、date() 関数の特殊な書式設定文字をすべて学習したいかどうかに関係なく、まったく異なる書式設定文字のセットを学習する必要があることも意味します。

strftime() は、特殊な書式設定文字の前にパーセント記号 % を付ける必要があることを除いて、date() と同様に機能します。 strftime() 関数を使用する場合、前の例のコードは次のようになります:

1.これは単純化しすぎているように思えるかもしれませんが、「今日は 2000 年 5 月 21 日の日曜日です。時刻は 18 時 24 分に近いです。」というものを表示する必要がある場合、date() 関数を使用するのは間違いなく退屈だと思います。
冒頭で、Unix タイムスタンプ値から有用なデータを取得するには 2 つの方法があると述べました。 date() と strftime() について学びました。別の getdate() 。この関数にはパラメータとして Unix タイムスタンプ値のみが必要で、関数の戻り値は日付と時刻の配列です。
以下に例を示します:

1.

「weekday」を除く、配列の他の部分は次のとおりです:

「秒」 – 秒 「分」 – 分
「時間」 – 時間
「mday」 - 月の日
「wday」 - 曜日 (数字)
「mon」 - 月(数字)
「年」 – 年
"yday" - r今年の日 (数字)
「month」 - 月の完全な名前
簡単に特定できる日付と時刻を取得できるようになりました。他の人はどうですか?

**現在の日付を Unix タイムスタンプ値に変換します

通常、一部のデータは日付または時刻形式で処理する必要があります。 M$ の Access データベースを開きます。すべての日付は YYYY/MM/DD の形式で保存されます。現在の日付を追加すると、2000/05/27 になります。 Mktime() 関数は、時間を Unix タイムスタンプ値に変換できます。

関数の形式は次のとおりです: int mktime(int 時, int 分, int 秒, int 月, int 日, int 年, int [is_dst] );

左から右に、時、分、秒、月、日、年を指定する必要があります。最後のパラメータは、夏時間であるかどうかを指定するために使用されます。このパラメータはオプションであるため、無視します。

コードは次のとおりです:

1.

1. Access データベースから単に日付を取得するよりも複雑な状況を見てみましょう: 2000/05/27 02:40:21 PM

1.
場合によっては、6 時間後の時刻、35 日前の日付、または最後に Quake 3 をプレイしてから何秒が経過したかを知る必要があります。 mktime() 関数を使用して、別の日付と時刻から Unix タイムスタンプ値を取得する方法はすでに知っています。現在の日付と時刻以外の Unix タイムスタンプ値が必要な場合はどうすればよいでしょうか?次に何を行うかを説明するのに役立ついくつかの演習を示します。

前に見たように、mktime() は次のパラメータを取ります: 時、分、秒、月、日、年。セクション 2 について考えてください。getdate() 関数はこれらのパラメーターを取得できます。

1.

1.

1. 6月4日日曜日09時58分
19時間追加後の~E
時間の短縮についても同様です。対応する変数の値を減らすだけで済みます。
2 つの異なる時間値の差を取得することも非常に簡単です。必要なのは、2 つの時刻値を Unix タイムスタンプ値に変換し、その 2 つを減算することだけです。 2 つの時間の差は、2 つの時間の間の秒数です。他のアルゴリズムでは、秒を日、時間、分、秒にすばやく変換できます。

**PHP に DateAdd 関数を追加します

記事の冒頭で述べたように、この記事を書いた理由は、PHP で ASP のような DateDiff 関数が見つからないからです。 PHP が日付と時刻を処理する方法を紹介した後、ASP で一般的に使用される 2 つの関数を PHP に移植しましょう。最初の関数は DateAdd です。 Vbscript のドキュメントによると、DateAdd(interval,number,date) 関数は、「指定された時間間隔を加算した日付を返す」と定義されています。

Inetrval は、分や日など、追加される時間間隔を表す文字列式です。number は、追加される時間間隔の数を表す数値式です。 Interval (時間間隔の文字列式) には、次のいずれかの値を指定できます:
yyyy年
q四半期
m月月
y 年の日付
dデー
w Weekday一週間の日数
ww 今年の週
時間
n分
秒秒
w、y、d の関数はまったく同じです。つまり、現在の日付に 1 日を加算し、q は 3 か月を加算し、ww は 7 日を加算します。

1.   2.function DateAdd ($interval, $number, $date) { 3.$date_time_array = getdate($date);   4.$時間 = $date_time_array["時間"];   5.$分 = $date_time_array["分"];   6.$秒 = $date_time_array["秒"];   7.$month = $date_time_array["mon"];   8.$day = $date_time_array["mday"];   9.$year = $date_time_array["年"];   10.switch ($interval) { 11.case "yyyy": $year +=$number;壊す;   12.case "q": $month +=($number*3);壊す;   13.case "m": $month +=$number;壊す;   14.ケース「y」: 15.ケース「d」: 16.ケース「w」: $day+=$number;壊す;   17.case "ww": $day+=($number*7);壊す;   18.case "h": $hours+=$number;壊す;   19.case "n": $分+=$number;壊す;   20.case "s": $秒+=$number;壊す;   21.} 22.$timestamp = mktime($時間、$分、$秒、$月、$日、$年);   23.return $timestamp;} 24.? > 上の日付コードを dateadd.inc ファイルとして保存し、その後次の日付コードを実行することができます:

1.   2.include('dateadd.inc');   3.$temptime = 時間();   4.echo strftime( "%Hh%M %A %d %b",$temptime);   5.$temptime = DateAdd("n" ,50,$temptime);   6.エコー「p」;   7.echo strftime( "%Hh%M %A %d %b",$temptime);   8.? > 我们将得:
6月03日土曜日15時41分
6月03日土曜日16時31分
PHP追加DateDiff関数数
现在DateAddすでに完了,那么DateDiff呢?
文書によると、DateDiff(interval,date1,date2) 関数の定義は「2 日間の期間を返す」です。
Intervals パラメータの使用方法は、DateAdd 関数と同じです。 複雑な考慮を避けるために、略称 Vbscript の DateDiff 関数の他のパラメータ、つまり、選択可能な 2 つのパラメータの値を [firstdayofweek[, firstweekofyear]] (それぞれ) に設定しました。そして、間隔は以下の 5 つの値のみを許可します: "w" (周)、"d" (日)、"h 「(小時間)、「n」(分)、「s」(秒)。

何が思いつくか見てみましょう: 下面的代码是我们所需要的:

1.   2.Function DateDiff ($interval, $date1,$date2) { 3.// 2 日期の間の秒数を取得します 4.$timedifference = $date2 - $date1;   5.switch ($interval) { 6.case "w": $retval = bcdiv($timedifference ,604800);壊す;   7.ケース "d": $retval = bcdiv( $timedifference,86400);壊す;   8.case "h": $retval = bcdiv ($timedifference,3600);壊す;   9.case "n": $retval = bcdiv( $timedifference,60);壊す;   10.case "s": $retval = $timedifference;壊す;   11.} 12.return $retval;} 13.? > 上の日付コードはdatediff.incファイルとして保存され、その後次の日付コードが実行されます:

1.   2.include('datediff.inc');   3.include('dateadd.inc');   4.$currenttime = time();   5.「現在の時刻:」をエコーし​​ます。 strftime("%Hh%M %A %d %b" ,$currenttime)."br";   6.$newtime = DateAdd ("n",50 ,$currenttime);   7.echo「時間プラス 50 分:」。 strftime("%Hh%M %A %d %b" ,$newtime)."br";   8.$temptime = DateDiff ("n",$currenttime,$newtime);   9.echo "2 つの時間の間隔: ".$temptime;   10.? > 一切顺利の場合、以下の結果を閲覧できます:

現在時刻: 6月3日土曜日16時23分 時間+50分: 6月3日土曜日17時13分
2 つの時間の間隔: 50
Unix マシン上で PHP を実行する場合は、BC 高精度関数をサポートする PHP をダウンロードし、それを PHP4 のルートに展開し、PHP を再起動し、--enable-bcmath を追加する必要があります。 (PHP4 の README.BCMATH について詳しく説明します)。PHP4 の Windows バージョンでは何も変更する必要はなく、BC 高精度関数を直接使用できます。 処理日と時間の関数が得られたので、それをどのように PHP プログラムで使用するかが問題になります。


 

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/371382.html技術記事この記事には次の内容が含まれています。 1. 現在の日付と時刻を取得する - 方法は何通りありますか? 2. 日付の表示方法を変更する - 日付と時刻の表示形式 3. 現在の日付を変換...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。