PHP には多数の組み込み関数が用意されているため、開発者は時間の管理が容易になり、作業効率が大幅に向上します。一般的な PHP の日付と時刻の関数と日付と時刻の処理をいくつか紹介します。
一般的に使用される日付と時刻の処理関数
| 説明 | ||||||||||||||||||||||||
checkdate | 時刻の確認関数、時間が有効かどうかを判断し、有効な場合は true を返し、そうでない場合は false を返します | ||||||||||||||||||||||||
date_default_timezone_get | スクリプトの日付と時刻関数で使用されるデフォルトのタイムゾーンを取得します | ||||||||||||||||||||||||
date_default_timezone_set | デフォルトを設定します日付と時刻の関数の場合 タイムゾーン | ||||||||||||||||||||||||
日付 | 現地の時刻/日付の形式 | ||||||||||||||||||||||||
getdate | 日時情報の取得 | ||||||||||||||||||||||||
gettimeofday | 現在時刻を取得 | ||||||||||||||||||||||||
localtime td> | 現地時間を取得します | ||||||||||||||||||||||||
microtime | 現在のタイムスタンプを返し、マイクロ秒 | ||||||||||||||||||||||||
mktime | UNIX タイムスタンプを取得します | ||||||||||||||||||||||||
strtotime | 英語テキストの日時記述を UNIX タイムスタンプに解析します | ||||||||||||||||||||||||
現在の UNIX タイムスタンプを返します |
システムのタイムゾーン設定
学習の過程で、date() 関数で取得した時刻が異なることに気づきました。これは、PHP5 の date() 関数の書き換えによるもので、現在の日付と時刻関数はシステム時刻より 8 時間短くなります。 PHP 言語のデフォルト設定は標準グリニッジ時間です (つまり、ゼロ タイム ゾーンが使用されます)。 PHP 言語でタイムゾーン設定を変更するには、主に 2 つの方法があります:
1. php.ini ファイルの設定を変更し、[date] の下にある;date.timezone= オプションを見つけて、この項目を日付に変更します。 timezone= Asia/Hong_Kong に設定し、Apache サーバーを再起動します。
2. アプリケーションでは、時刻と日付関数を使用する前に次の関数を追加します。
date_default_timezone_set("Asia/Hong_Kong"); 設定が完了したら、date() 関数を追加します。通常通りに使用でき、時差ぼけの問題はなくなります。
UNIX タイムスタンプ
タイムスタンプは、ファイル属性の作成、変更、およびアクセス時刻です。デジタル タイム スタンプ サービス (DTS) は、電子ファイルの日時情報をセキュリティ保護できる Web サイトのセキュリティ サービスの 1 つです。
タイムスタンプは暗号化されたバウチャー文書であり、次の 3 つの部分で構成されます。
² タイムスタンプが必要なファイルは、ハッシュ エンコーディングで暗号化されてダイジェストが形成されます。
² DTS はファイルの日付と時刻の情報を受け入れます。
² 受け入れられた DTS ファイルを暗号化します。
デジタル時間は、DTS がファイルを受信した時刻に基づいて、認証ユニット DTS によって追加されます。タイムスタンプの動作原理は、時刻が変更されると、それに応じて時刻値を暗号化された値に変換することです。タイムスタンプの利点は、暗号化された値が変更されることで値の盗難や不正な再利用が防止されることであり、これも暗号化の役割を果たします。タイムスタンプは主に時間に依存し、合意された期間内に一意の値を生成します。
mktime() 関数
構文:
int mktime(int 時間, int 分、int 月、int 日、int 年、int [is_dst])
パラメータ
|
| ||||||||||||||||
時間 | 時間 | tr>||||||||||||||||
分 | 分 | ||||||||||||||||
秒 | 秒数(1分以内) | ||||||||||||||||
月 | 月番号 | ||||||||||||||||
日 | 日番号 | ||||||||||||||||
年 | 年番号 | ||||||||||||||||
is_dst | 夏時間中はパラメータ is_dst を 1 に設定でき、そうでない場合は -1 (デフォルト値) に設定できます。夏時間かどうかが不明な場合は |
date() 関数
date(string format,int timestamp)
この関数はパラメータを返しますタイムスタンプは、指定された形式に従って生成される文字列です。パラメータのタイムスタンプはオプションです。省略した場合は、現在の時刻が使用されます。 format パラメーターを使用すると、開発者は指定した形式で時刻と日付を出力できます。
date_default_timezone_set(PRC); //北京時間を設定します。
書式文字 | 説明 | 戻り値例 |
---|---|---|
日 | --- | --- |
d | 日、先行ゼロ付き 2 桁 | 01 ~ 31 |
D | 曜日、テキスト表現、3 文字 | 月から日 |
j | その月の日、先頭にゼロはありません | 1 ~ 31 |
l (「L」の小文字) | その日週、完全なテキスト形式 | 日曜日から土曜日 |
N | ISO-8601 形式の曜日の数値表現 曜日(PHP 5.1.0 で新たに追加されました) | 1 (月曜日を意味します) ~ 7 (日曜日を意味します) |
S | Every 後の英語の接尾辞月の日、2 文字 | st、nd、rd、または th。 j |
w | と組み合わせて使用できます。数字は | 0 (日曜日を意味します) から 6 (土曜日を意味します) を表します。 |
z | 通算日 | 0 ~ 365 |
曜日 | --- | --- |
W | 月曜日から始まる ISO-8601 形式の年の週番号 開始(PHP 4.1.0 の新機能) | 例: 42 (年の第 42 週) |
月 | --- | --- |
F | 月、1 月や 3 月などの完全なテキスト形式 | 1 月から 12 月 |
m | 月の数値 (先行ゼロ付き) | 01 ~ 12 |
M | 3 文字月の省略形 | 1 月から 12 月まで |
n | 月の数値 (先行ゼロなし) | 1 から 12 |
t | 特定の月の日数 | 28 ~ 31 |
年 | - -- | --- |
L | 閏年かどうか | 閏年の場合は 1、0それ以外の場合は、 |
o | ISO-8601 形式の年番号。これは Y と同じ値ですが、ISO 週番号 (W) が前年または翌年に属している場合は、その年が使用されます。 (PHP 5.1.0 の新機能) | 例: 1999 または 2003 |
Y | 完全な 4 桁の年 | 例: 1999 または 2003 |
y | 2 桁の年 | 例: 99 または 03 |
時刻 | --- | --- |
a | AM と PM の小文字の値 | 午前または午後 |
A | 午前と午後の大文字の値 | 午前または午後 |
B | インターネット標準時間の見本 | 000 ~ 999 |
g | 時間、12 時間形式、先行ゼロなし | 1 ~ 12 |
G | 時間、24 時間形式、先行ゼロなし | 0 ~ 23 |
h | 時間、12 時間形式、先行ゼロ付き | 01 ~ 12 |
H | 時間、24 時間形式、先行ゼロ付き | 00 ~ 23 |
i | 分先行ゼロ付き | 00 ~ 59> |
s | 秒 (先頭にゼロあり) | 00 ~ 59> |
u | ミリ秒 (PHP 5.2.2 の新機能)。 date() 関数は整数パラメーターのみを受け入れ、DateTime::format() はミリ秒のみをサポートするため、常に 000000 を返すことに注意してください。 | 例: 654321 |
タイムゾーン | --- | --- |
e | タイムゾーン識別子 (PHP 5.1.0 の新機能) | 例: UTC、GMT、大西洋/アゾレス諸島 |
I | 夏時間かどうか | 夏時間の場合は 1、それ以外の場合は 0 |
O | グリニッジからの時間平均時間数値 | 例: +0200 |
P | 時と分をコロンで区切ったグリニッジ標準時 (GMT) との差( PHP 5.1.3 で新規追加) | 例: +02:00 |
T | このマシンが位置するタイムゾーン | 例: EST、MDT ([翻訳者注] Windows では「東部標準時」などの完全なテキスト形式ですが、中国語版では「中国標準時」と表示されます)。 |
Z | 秒単位の時差オフセット。UTC より西のタイム ゾーン オフセットは常に負であり、UTC より東のタイム ゾーン オフセットは常に正です。 | -43200 ~ 43200 |
完全な日付/時刻 | --- | --- |
c | ISO 8601 形式の日付 (PHP 5 の新機能) | 2004-02-12T15:19:21+00:00 |
r | RFC 822 形式の日付 | 例: Thu, 21 Dec 2000 16:01:07 +0200 |
U | Unix エポック (1970 年 1 月 1 日 00:00:00 GMT) からの秒数 | 時刻を参照() |
getdate() 関数
この関数は、日付と時刻の情報を配列形式で返します。タイムスタンプがない場合は、現在の時刻が優先されます。
元 素 | 说 明 |
seconds | 秒,返回值0~59 |
minutes | 分钟,返回值为0~59 |
hours | 小时,返回值为0~23 |
mday | 月份中第几天,返回值为1~31 |
wday | 星期中第几天,返回值为0(星期天)~6(星期六) |
mon | 月份数字,返回值为1~12 |
year | 4位数字表示的完整年份,返回值加2000或2008 |
yday | 一年中第几天,返回值0~365 |
weekday | 星期几的完整文本表示,返回值为Sunday~Saturday |
month | 月份的完整文本表示,返回值为January~December |
0 | 返回从UNIX纪元开始的秒数 |
要素
説明
秒
分
<!doctype html> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> </head> <body> <?php // 设置时区 date_default_timezone_set('Asia/Chongqing'); // 指定时间到UNIX纪元的差值 echo mktime(1, 2, 3, 4, 5, 2006)."<br>"; // 当前时间到UNIX纪元的差值 echo time()."<br>"; // 格式化时间 echo date("Y-m-d H-i-s")."<br>"; // 时间数组 $arrays = getdate(); print_r($arrays)."<br>"; // 检测时间 var_dump( checkdate(7, 9, 2015) ); "<br>"; // 本地化时间戳,strtotime还可用于时间的大小比较 setlocale(LC_TIME, 0); echo strftime('%Y,%m,%d', strtotime('2000-04-00'))."<br>"; // 微妙 echo microtime(true); function 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); //60 * 60 $sub2 = ceil(($time3 - $time1) / 86400); //60 * 60 * 24 echo "离放假还有<font color=red> $sub1 </font>小时!!!" ; echo "<p>"; echo "离北京奥运开幕还有<font color=red>$sub2 </font>天!!!"; $end_time = run_time(); echo '耗时'.($end_time - $start_time); ?> </body> </html>分、戻り値は 0~59