PHP には多数の組み込み関数が用意されているため、開発者は時間を簡単に管理でき、作業効率が大幅に向上します。今日は、いくつかの一般的な PHP の日付と時刻の関数と日付と時刻の処理を学生に紹介します。
9.1 よく使用される日付と時刻の処理関数
表 9-1: 一般的に使用される日付と時刻の処理関数
機能
説明してください
チェックデート
time 関数を検証して時間が有効かどうかを判断し、有効な場合は true を返し、そうでない場合は false を返します
date_default_timezone_get
スクリプトの日時関数で使用されるデフォルトのタイムゾーンを取得します
date_default_timezone_set
日付と時刻機能のデフォルトのタイムゾーンを設定します
日付
現地の時刻/日付をフォーマットします
デート
日付/時刻情報を取得します
今日の時間をゲット
現在時刻を取得します
現地時間
現地時間を取得します
マイクロタイム
現在のタイムスタンプとマイクロ秒を返します
UNIX タイムスタンプを取得します
ストラトタイム
英語テキストの日時記述を UNIX タイムスタンプに解析します
時間
現在の UNIX タイムスタンプを返します
9.2 処理日時
9.2.1 現在の日付と時刻を取得する: date() 関数、使用法:
date(文字列形式、int タイムスタンプ)
この関数は、指定された形式に従ってタイムスタンプ パラメーターによって生成された文字列を返します。パラメータのタイムスタンプはオプションです。省略した場合は、現在の時刻が使用されます。 format パラメーターを使用すると、開発者は指定した形式で時刻と日付を出力できます。
date_default_timezone_set(PRC); //北京時間を設定します
1. 年月日
echo date('Y-m-j'); //例: 2007-02-6
echo date('y-n-j'); //例: 07-2-6
大文字の Y は 4 桁の年を表し、小文字の y は 2 桁の年を表します。
小文字の m は月の番号 (先頭付き) を表し、小文字の n は先頭のない月の番号を表します。
echo date('Y-M-j'); //例: 2007-2月6日
echo date('Y-m-d'); //例: 2007-02-06
大文字の M は月の 3 つの省略文字を表し、小文字の m は月の番号 (先頭に 0 が付きます) を表します。
大文字の J はなく、小文字の j のみが月の日を表し、先頭の o が必要な場合は小文字の d を使用します。
echo date('Y-M-j'); //例: 2007-2月6日
echo date('Y-F-jS'); //例: 2007-2月6日
大文字の M はその月の 3 つの省略文字を表し、大文字の F はその月の完全な英語文字を表します。 (小文字の f は不可)
大文字の S は、日付番号に応じて、「st」、「nd」、「rd」、「th」などの日付の接尾辞を表します。
概要:
年は大文字の Y と小文字の y で表すことができます。
月は、大文字の F、大文字の M、小文字の m、および小文字の n で表すことができます (それぞれ文字と数字を表す 2 つの方法)。
小文字の d と小文字の j は日付を表すために使用でき、大文字の S は日付の接尾辞を表します。
2. 時:分:秒
デフォルトでは、PHP は表示時刻を「グリニッジ標準時」として解釈します。これは現地時間とは 8 時間異なります。
echo date('g:i:s a'); //例: 午前5時56分57秒
echo date('h:i:s A'); //例: 05:56:57 AM
小文字の g は先頭に 0 のない 12 時間制を示し、小文字の h は先頭に 0 がある 12 時間制を示します。
12 時間制を使用する場合、小文字の a は小文字の「am」と「pm」を表し、大文字の A は大文字の「AM」と「PM」を表します。
エコー日付('G:i:s');14:02:26
大文字の G は、先頭を付けずに 24 時間形式で時間を表します。先頭に
を付けて 24 時間形式で時間を表すには、大文字の H を使用します。
概要:
文字 g は先頭なしの時間を表し、文字 h は先頭のある時間を表します
小文字の g と h は 12 時間形式を表し、大文字の G と H は 24 時間形式を表します。
3. うるう年、週、日
大文字の L は、今年がうるう年かどうかを示します。ブール値は、true の場合は 1 を返し、それ以外の場合は 0 を返します。
小文字の l は、完全な英語版の曜日 (火曜日) を表します。
代わりに、大文字の D を使用して、曜日 (火) の 3 文字の省略形を表します。
echo date('w'); //例: 今日の週: 2
echo date('W'); //例: 今週は今年の第 6 週です
小文字の w は曜日を数値形式で表します
大文字の W は 1 年の週数を表します
echo date('t'); //例: 今月は 28 日です
echo date('z'); //例: 今日は今年の 36 日目です
小文字の t は当月の日数を表します
小文字の z は、今日が何日かを意味します
4. その他
echo date('T'); //例: UTC
大文字の T はサーバーの時間ロケールを表します
echo date('I'); //例: 0
大文字 I は、夏時間であるかどうかを判断することを意味し、true の場合は 1 を返し、それ以外の場合は 0 を返します
。
echo date('U'); //例: 1170769424
大文字の U は、1970 年 1 月 1 日から現在までの合計秒数を表し、これが Unix 時間エポックの UNIX タイムスタンプです。
echo date('c'); //例: 2007-02-06T14:24:43+00:00
小文字の c は ISO8601 日付を表します。日付形式は YYYY-MM-DD です。文字 T は日付と時刻の区切りに使用されます。時刻形式は HH:MM:SS です。タイム ゾーンはグリニッジからのオフセットで表されます。平均時間 (GMT)。
echo date('r'); //例: 2007 年 2 月 6 日火曜日 14:25:52 +0000
小文字の r は RFC822 の日付を示します。
9.2.2 日付情報の取得:getdate()関数
文法:
配列 getdate(int タイムスタンプ)
この関数は、日付と時刻の情報を配列の形式で返します。タイムスタンプがない場合は、現在の時刻が優先されます。この関数によって返される連想配列要素の説明を表 9-2 に示します。
表 9-2: getdate() 関数によって返される連想配列要素の説明
要素要素
説明してください
秒
秒、戻り値 0~59
分
分、戻り値は0~59です
何時間か
時間、戻り値は 0~23 です
今日
日付、戻り値は1~31です
平日
曜日、戻り値は0(日曜日)~6(土曜日)です
月
月番号、戻り値は1~12です
年
4 桁で表される完全な年、戻り値に 2000 または 2008 を加えたもの
今日
年間通算日、戻り値 0~365
平日
曜日の完全なテキスト表現、戻り値は日曜日〜土曜日です
月
月の完全なテキスト表現、戻り値は 1 月~12 月です
0
UNIX エポックからの秒数を返します
例:
$arr = getdate();
echo $arr[年]."-".$arr[月]."-".$arr[月]."";
echo $arr[時間].":".$arr[分].":".$arr[秒]."".$arr[平日];
エコー "
";
echo "今日は今年の $arr[yday] 日です";
?>
効果:
9.3 UNIX タイムスタンプ
タイムスタンプは、ファイル属性の作成、変更、およびアクセス時刻です。デジタル タイム スタンプ サービス (DTS) は、電子ファイルの日時情報をセキュリティ保護できる Web サイトのセキュリティ サービスの 1 つです。
9.3.1 タイムスタンプとは
タイムスタンプは暗号化された認証情報文書であり、次の 3 つの部分で構成されます:
² タイムスタンプが必要なファイルは、ハッシュ エンコーディングを使用して暗号化され、概要が形成されます。
² DTS はファイルの日付と時刻の情報を受け入れます。
² 受信した DTS ファイルを暗号化します。
デジタル時刻は、DTS がファイルを受信した時刻に基づいて、認証ユニット DTS によって追加されます。
タイムスタンプの動作原理は、時刻が変更されると、それに応じて時刻値を暗号化された値に変換することです。
タイムスタンプの利点は、暗号化された値が変更されることで値の盗難や不正な再利用が防止されることであり、これも暗号化の役割を果たします。タイムスタンプは主に時間に依存し、合意された期間内に一意の値を生成します。
9.3.2 ローカルタイムスタンプの取得: mktime() 関数
文法:
int mktime(int 時間、int 分、int 月、int 日、int 年、int [is_dst])
表 9-3: mktime() 関数のパラメータの説明
パラメータ
説明してください
時間
時間数
分
分
2番目
秒数(1分以内)
月
月数
日
日数
年
年号
is_dst
夏時間中は is_dst パラメータを 1 に設定でき、夏時間かどうか不明な場合は 0 に設定し、-1 (デフォルト値) に設定します。
注: 有効なタイムスタンプの一般的な範囲は、1901 年 12 月 13 日 20:45:54 GMT から 2038 年 1 月 19 日 03:13:07 までです (この範囲は、32 ビット符号付き整数の最小値と最大値に準拠します) 。 Windows システムでは、この範囲は 1970 年 1 月 1 日から 2038 年 1 月 19 日までに制限されます。
例:
echo "mktime 関数によって返されるタイムスタンプ: ".mktime()."
";
echo "現在の日付は次のとおりです:".date("Y-m-d",mktime())."
";
echo "現在時刻は:".date("H:i:s",mktime());
?>
効果:
9.4 システムのタイムゾーン設定
学習プロセス中に、多くの学生が、date() 関数によって取得された時刻が現地時間と異なることに気づきました。これは、PHP5 が date() 関数を書き換えたためであり、現在の日付と時刻関数は現地時間より 8 時間短いことになります。システム時間。 PHP 言語のデフォルト設定は標準グリニッジ時間です (つまり、ゼロ タイム ゾーンが使用されます)。
PHP 言語でタイムゾーン設定を変更するには、主に 2 つの方法があります:
1. php.ini ファイルの設定を変更し、[date] の下にある;date.timezone = オプションを見つけて、この項目を date.timezone=Asia/Hong_Kong に変更し、Apache サーバーを再起動します。
2. アプリケーションで、時刻と日付関数を使用する前に次の関数を追加します。
date_default_timezone_set(“アジア/香港”);
設定完了後は、date()関数が正常に使用できるようになり、時差の問題も発生しなくなります。
9.5 時間開発で発生する日付と時刻の問題
9.5.1 2回の大きさを比較する
実際の開発では、PHP の 2 つの倍数を直接比較することができないという問題に遭遇することがよくあります。したがって、まず時刻をタイムスタンプ形式で出力してから比較する必要があります。これが一般的に使用される方法です。
この機能を実現できる関数は 2 つあります。ここでは strtotime() 関数を使用します。この関数は、英語のテキストの日付と時刻の記述を UNIX タイムスタンプに解析できます。この関数の構文は次のとおりです:
int strtotime(文字列時間, int now)
この関数には 2 つのパラメータがあります。パラメータ time の形式が絶対時間の場合、now パラメータは効果がありません。パラメータ time の形式が相対時間の場合、パラメータ now が指定されていない場合は、対応する時間が提供されます。対応する時刻は現在時刻です。解析が失敗した場合は、-1 が返されます。
例:
$time1 = date("Y-m-d H:i:s") // 現在時刻を取得します
$time2 = "2008-2-3 16:30:00" //変数 $time2 に時間を設定します
echo "変数/$time1 の時刻は: ".$time1."
echo "変数/$time2 の時刻は次のとおりです: ".$time2."
If (strtotime($time1)-strtotime($time2)
echo "/$time1 は /$time2 よりも前です"; // time1-time2
}その他{
echo "/$time2 は /$time1 よりも早い" // それ以外の場合は、time2 が早いことを意味します
}
?>
効果:
9.5.2 2 つの日付の差を計算する
strtotime() 関数は、2 つの日付のサイズを比較するだけでなく、2 つの日付の差を正確に知ることもできます。以下では、小さなカウントダウン プログラムを使用して、strtotime() 関数を使用して 2 つの日付の差を計算する方法を生徒に説明します。
$time1 = strtotime(date( "Y-m-d H:i:s"));
$time2 = strtotime("2008-2-3 17:10:00");
$time3 = strtotime("2008-8-8");
$sub1 = ceil(($time2 - $time1) / 3600); $sub1 = ceil(($time2 - $time1) //60 * 60
;
$sub2 = ceil(($time3 - $time1) / 86400) //60 * 60 * 24
;
echo "休日まではまだ $sub1 時間あります!!!" ;
エコー "
";
echo "北京オリンピックの開幕まで、まだ $sub2 日あります!!!";
?>
効果:
9.5.3 ページスクリプトの実行時間を計算する
Web サイトを閲覧するとき、情報を検索するときに検索エンジンがよく使用されます。注意深いユーザーは、通常、検索結果の下部に「検索時間は...秒」という言葉があることに気づくでしょう。
ここでは microtime() 関数が使用されており、現在の UNIX タイムスタンプとマイクロ秒を返します。 msec sec 形式の文字列を返します。ここで、sec は現在の UNIX タイムスタンプ、msec はマイクロ秒数です。この関数の形式は次のとおりです:
文字列マイクロタイム(void)
上記の例の実行時間を計算してみましょう。コードは次のとおりです:
関数 run_time()
{
List($msec, $sec) =explode(" ", microtime());
Return ((float)$msec + (float)$sec);
}
$start_time = run_time();
$time1 = strtotime(date( "Y-m-d H:i:s"));
$time2 = strtotime("2008-2-3 17:10:00");
$time3 = strtotime("2008-8-8");
$sub1 = ceil(($time2 - $time1) / 3600); $sub1 = ceil(($time2 - $time1) //60 * 60
;
$sub2 = ceil(($time3 - $time1) / 86400) //60 * 60 * 24
echo "休日まではまだ $sub1 時間あります!!!" ;
エコー "
";
echo "北京オリンピックの開幕まで、まだ $sub2 日あります!!!";
$end_time = run_time();
?>
この例は で実行されます。