用php的時候可能常會用到標準時間,有兩個辦法。
第一種方法:
取得伺服器的時間
先設定php.ini中的date.timezone = PRC
或直接在程式頁面加入date_default_timezone_set("PRC"); ()
或date(''Y-m-d H:i:s)
第二種方法:取得網路時間(這裡是藉網上的,原文網址:http://justcoding.iteye.com/blog/843645 )
有一種情形是這樣子的,例如機票業務中的訂票流程,我們需要一個非常可靠的當前時間來支持,儘管大多數伺服器的時間是非常準確的,我們使用time()來獲取的時間是可靠的,但未免會有不確切的情況,也有的伺服器由於未開啟ntp(Network Time Protocol ) 來進行時間同步,再由於硬體環境等因素,導致時間五花八門,這在通常,也就差個幾分鐘、最多幾個小時的情況是無可厚非的,因為在同一個網站使用的是同一時間,可是有的時候這樣很糟糕。在internet上,有免費專門提供UTC時間校正的授時伺服器,使用NTP協議,這個可以參考前面的連結來獲取更多知識。他提供的時間誤差在20ms左右(不要說在資料傳輸過程中會耗費的時間不等,NTP早就考慮到了這一點),因此透過這種授時伺服器,我們就能得非常可 信的當前時間。
我們現在就來看看用PHP怎麼獲取到非常精準的UTC時間,由於NTP協議稍微有一點點的不好用,我們有一個更好的協議可以用,他就是Daytime Protocol協議,通過這個協議我們可以直接得到文字數據,這樣處理起來會更方便。我們使用time.nist.gov的時間服務,程式碼非常簡單, 用TCP連接它的13埠就可以了。
<code><span>$fp</span>=fsockopen(<span>'time.nist.gov'</span>,<span>13</span>,<span>$errno</span>,<span>$errstr</span>,<span>90</span>); <span>echo</span> fread(<span>$fp</span>,<span>2010</span>); </code>
所獲得的資料類似於這樣的:
<code>55545 10<span>-12-15</span> 21<span>:40</span><span>:47</span> 00 0 0 113<span>.1</span><span>UTC</span>(<span>NIST</span>) * </code>
這個串的每個部分都有意義,具體的請參看:http://www.nist.gov/pml/div688/grp40/its.cfm ,現在我們只關心中間的部分和206.9前面的那個0,它表示伺服器的健康狀況,也反映當前的時間是否可信。
OK了,用PHP實現獲得準確的UTC時間,這個應用在對時間要求非常苛刻的場合還是很有價值的,到此,我的問題也算解決了。
知道了UTC 標準時間, 剩下的就是轉換成世界時間了,請參閱 php取得當地時間 time zone
<code><span>$fp</span>=fsockopen(<span>'time.nist.gov'</span>,<span>13</span>,<span>$errno</span>,<span>$errstr</span>,<span>90</span>); <span>$ufc</span> = explode(<span>' '</span>,fread(<span>$fp</span>,date(<span>'Y'</span>))); <span>$date</span> = explode(<span>'-'</span>,<span>$ufc</span>[<span>1</span>]); <span>$processdate</span> = <span>$date</span>[<span>1</span>].<span>'-'</span>.<span>$date</span>[<span>2</span>].<span>'-'</span>. date(<span>'Y'</span>).<span>' '</span>.<span>$ufc</span>[<span>2</span>]; <span>switch</span>(<span>$ufc</span>[<span>5</span>]) { <span>case</span><span>0</span>: <span>echo</span><span>'精确'</span>; <span>break</span>; <span>case</span><span>1</span>: <span>echo</span><span>'误差:0-5s'</span>; <span>break</span>; <span>case</span><span>2</span>: <span>echo</span><span>'误差: > 5s'</span>; <span>break</span>; <span>default</span>: <span>echo</span><span>'硬件出错!'</span>; <span>break</span>; } <span>echo</span> gmttolocal(<span>$processdate</span>,<span>8</span>); <span>// 中国 </span><span><span>function</span><span>gmttolocal</span><span>(<span>$mydate</span>,<span>$mydifference</span>)</span>{</span><span>$datetime</span> = explode(<span>" "</span>,<span>$mydate</span>); <span>$dateexplode</span> = explode(<span>"-"</span>,<span>$datetime</span>[<span>0</span>]); <span>$timeexplode</span> = explode(<span>":"</span>,<span>$datetime</span>[<span>1</span>]); <span>$unixdatetime</span> = mktime(<span>$timeexplode</span>[<span>0</span>]+<span>$mydifference</span>,<span>$timeexplode</span>[<span>1</span>],<span>0</span>,<span>$dateexplode</span>[<span>0</span>],<span>$dateexplode</span>[<span>1</span>],<span>$dateexplode</span>[<span>2</span>]); <span>return</span> date(<span>"m/d/Y H:i:s"</span>,<span>$unixdatetime</span>); } </code>
fsockopen 解釋:
開啟網路的 Socket 連結。
語法:int fsockopen(string hostname, int port, int [errno], string [errstr], int [timeout]);
傳回值: 整數
函數種類: 網路系統
內容說明目前這個函數提供二個 Socket 資料流介面,分別為 Internet 用的 AF_INET 及 Unix 用的 AF_UNIX。在 Internet 情形下使用時,參數 hostname 及 port 分別代表網址及埠號。在 UNIX 情形可做
,hostname 參數表示到 socket 的路徑,port 配置為 0。可省略的 timeout 選項表示多久沒有連上就中斷。使用本函數之後會傳回檔案指針,供檔案函數使用,包括 fgets()、fgetss()、fputs()、fclose() 與 feof()。參數 errno 及 errstr 也是可省略的,主要當做錯誤處理使用。使用本函數,會使用擱置模式 (blocking mode) 處理,可用 set_socket_blocking() 轉換成無擱置模式。 Author:
leedaning
本文網址:http://blog.csdn.net/leedaning/article/details/48547123
以上就介紹了php取得時間(系統時間和網路時間),包括了方面的內容,希望對PHP教學有興趣的朋友有幫助。

aphpdepentioncontiveContainerIsatoolThatManagesClassDeptions,增強codemodocultion,可驗證性和Maintainability.itactsasaceCentralHubForeatingingIndections,因此reducingTightCightTightCoupOulplingIndeSingantInting。

選擇DependencyInjection(DI)用於大型應用,ServiceLocator適合小型項目或原型。 1)DI通過構造函數注入依賴,提高代碼的測試性和模塊化。 2)ServiceLocator通過中心註冊獲取服務,方便但可能導致代碼耦合度增加。

phpapplicationscanbeoptimizedForsPeedAndeffificeby:1)啟用cacheInphp.ini,2)使用preparedStatatementSwithPdoforDatabasequesies,3)3)替換loopswitharray_filtaray_filteraray_maparray_mapfordataprocrocessing,4)conformentnginxasaseproxy,5)

phpemailvalidation invoLvesthreesteps:1)格式化進行regulareXpressecthemailFormat; 2)dnsvalidationtoshethedomainhasavalidmxrecord; 3)

tomakephpapplicationsfaster,關注台詞:1)useopcodeCachingLikeLikeLikeLikeLikePachetoStorePreciledScompiledScriptbyTecode.2)MinimimiedAtabaseSqueriSegrieSqueriSegeriSybysequeryCachingandeffeftExting.3)Leveragephp7 leveragephp7 leveragephp7 leveragephpphp7功能forbettercodeefficy.4)

到ImprovephPapplicationspeed,關注台詞:1)啟用opcodeCachingwithapCutoredUcescriptexecutiontime.2)實現databasequerycachingingusingpdotominiminimizedatabasehits.3)usehttp/2tomultiplexrequlexrequestsandreduceconnection.4 limitesclection.4.4

依赖注入(DI)通过显式传递依赖关系,显著提升了PHP代码的可测试性。1)DI解耦类与具体实现,使测试和维护更灵活。2)三种类型中,构造函数注入明确表达依赖,保持状态一致。3)使用DI容器管理复杂依赖,提升代码质量和开发效率。

DatabasequeryoptimizationinPHPinvolvesseveralstrategiestoenhanceperformance.1)Selectonlynecessarycolumnstoreducedatatransfer.2)Useindexingtospeedupdataretrieval.3)Implementquerycachingtostoreresultsoffrequentqueries.4)Utilizepreparedstatementsforeffi


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

Dreamweaver CS6
視覺化網頁開發工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SublimeText3漢化版
中文版,非常好用

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。