ホームページ  >  記事  >  バックエンド開発  >  PHP の日時

PHP の日時

WBOY
WBOYオリジナル
2016-06-20 12:51:261069ブラウズ

PHP には多数の組み込み関数が用意されているため、開発者は時間の管理が容易になり、作業効率が大幅に向上します。一般的な PHP の日付と時刻の関数と日付と時刻の処理をいくつか紹介します。


一般的に使用される日付と時刻の処理関数

time

函 数

说  明

checkdate

验证时间函数,判断时间是否有效,有效返回true,否则返回false

date_default_timezone_get

取得脚本日期时间函数所使用的默认时区

date_default_timezone_set

设定日期时间函数的默认时区

date

格式化一个本地时间/日期

getdate

获取日期/时间信息

gettimeofday

获取当前时间

localtime

获取本地时间

microtime

返回当前时间戳和微秒数

mktime

取得一个UNIX时间戳

strtotime

将任何英文文本的日期时间描述解析为UNIX时间戳

time

返回当前的UNIX时间戳

関数

説明

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>

パラメータ

参  数

说  明

hour

小时数

minute

分钟数

second

秒数(一分钟之内)

month

月份数

day

天数

year

年份数

is_dst

参数is_dst在夏令时可以被设置为1,如果不是则设置为0;如果不确定是否为夏令时则设置为-1(默认值)

時間 時間
秒数(1分以内)
月番号​​
日番号
年番号
is_dst 夏時間中はパラメータ is_dst を 1 に設定でき、そうでない場合は -1 (デフォルト値) に設定できます。夏時間かどうかが不明な場合は
注: 有効なタイムスタンプの一般的な範囲は、1901 年 12 月 13 日 20:45:54 GMT から 2038 年 1 月 19 日 03:13:07 までです (この範囲は、32 ビット符号付き整数の最小値と最大値に準拠します) 。 Windows システムでは、この範囲は 1970 年 1 月 1 日から 2038 年 1 月 19 日までに制限されます。


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纪元开始的秒数

要素

説明





秒、戻り値 0~59




    <!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
時間 時間、戻り値は 0~23 です。 mday 日、戻り値は 1 ~ 31 wday 曜日、戻り値は0(日曜日)~6(土曜) mon 月番号​​、戻り値は 1~12 年 4 桁で表される完全な年、戻り値に 2000 または 2008 を加えたもの yday 通算日、戻り値 0~365 平日 曜日の完全なテキスト表現、戻り値は日曜日〜土曜日です 月 月の完全なテキスト表現。1 月から 12 月までとして返されます。 0 UNIX エポックから返される 開始秒 2 倍の大きさを比較 でよく発生します実際の開発 2 つの時間の大きさを決定するために、PHP では時間を直接比較することはできません。したがって、まず時刻をタイムスタンプ形式で出力してから比較する必要があります。これが一般的に使用される方法です。 この機能を実現できる関数は 2 つあり、ここでは strtotime() 関数が使用されており、英語のテキストの日付と時刻の記述を UNIX タイムスタンプに解析できます。 この関数の構文は次のとおりです: int strtotime(string time, int now) この関数には 2 つのパラメータがあります。パラメータ time の形式が絶対時間の場合、now パラメータは効果がありません。パラメータ time の形式が相対時間の場合、パラメータ now が指定されていない場合は、対応する時間が提供されます。対応する時刻は現在時刻です。解析が失敗した場合は、-1 が返されます。 ページ スクリプトの実行時間を計算します。 ウェブサイトでは、検索エンジンが頻繁に使用され、情報を検索するときに、注意深いユーザーは検索結果の下部に「検索時間は...秒」という文字が表示されることがよくあります。ここでは microtime() 関数が使用されており、現在の UNIX タイムスタンプとマイクロ秒を返します。 msec sec 形式の文字列を返します。ここで、sec は現在の UNIX タイムスタンプ、msec はマイクロ秒数です。この関数の形式は次のとおりです: string microtime(void) 出典: http://blog.csdn.net/aoshilang2249/article/details/46822105
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。