php获取时间(系统时间和网络时间)
用php的时候可能经常会用到标准时间,有两个办法。
第一种方法:
获取服务器的时间
首先配置php.ini中的date.timezone = PRC
或者直接在程序页面加入date_default_timezone_set("PRC");
然后就可以使用time()
或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 情形可做 IPC,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教程有兴趣的朋友有所帮助。

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











Apabila membangunkan menggunakan program PHP, anda sering menghadapi beberapa amaran atau mesej ralat. Antaranya, satu mesej ralat yang mungkin muncul ialah: PHPWarning:date()expectsparameter2tobelong,stringgiven. Mesej ralat bermaksud: parameter kedua bagi tarikh fungsi() dijangka menjadi integer panjang (panjang), tetapi yang sebenarnya dihantar kepadanya ialah rentetan (rentetan). Jadi, kita

Jika anda sedang mencari cara untuk membuat dan menamakan fail dan folder secara automatik berdasarkan cap masa sistem, anda telah datang ke tempat yang betul. Terdapat cara yang sangat mudah untuk menyelesaikan tugas ini. Folder atau fail yang dibuat kemudiannya boleh digunakan untuk pelbagai tujuan seperti menyimpan sandaran fail, menyusun fail berdasarkan tarikh, dsb. Dalam artikel ini, kami akan menerangkan dalam beberapa langkah yang sangat mudah cara membuat fail dan folder secara automatik dalam Windows 11/10 dan menamakannya mengikut cap masa sistem. Kaedah yang digunakan adalah skrip kelompok, yang sangat mudah. Harap anda seronok membaca artikel ini. Bahagian 1: Cara membuat dan menamakan folder secara automatik berdasarkan cap masa semasa sistem Langkah 1: Mula-mula, navigasi ke folder induk tempat anda ingin mencipta folder,

Hari ini kita akan melihat kaedah penggunaan masa pakej masa golang. Peraturan umum antara kedua-duanya ialah "masa dinding" digunakan untuk memberitahu masa, dan "jam monotonik" digunakan untuk mengukur masa terdapat kaedah pemprosesan jam lain.

Bagaimana untuk mendapatkan perwakilan milisaat tarikh menggunakan kaedah getTime() kelas Tarikh Dalam Java, kelas Tarikh ialah kelas yang digunakan untuk mewakili tarikh dan masa. Ia menyediakan banyak kaedah berguna untuk memanipulasi dan mendapatkan maklumat tentang objek tarikh. Antaranya, kaedah getTime() ialah kaedah penting dalam kelas Date, yang boleh mengembalikan perwakilan milisaat objek tarikh. Seterusnya, kami akan memperincikan cara menggunakan kaedah ini untuk mendapatkan perwakilan milisaat tarikh, dan memberikan contoh kod yang sepadan. Menggunakan kelas Tarikh

1. Pengenalan Kelas Tarikh dalam pakej java.util mewakili masa tertentu, tepat kepada milisaat. Jika kita ingin menggunakan kelas Date kita, maka kita mesti memperkenalkan kelas Date kita. Menulis tahun terus ke dalam kelas Tarikh tidak akan menghasilkan hasil yang betul. Oleh kerana Date in Java dikira dari 1900, jadi selagi anda mengisi parameter pertama dengan bilangan tahun sejak 1900, anda akan mendapat tahun yang anda inginkan. Bulan perlu ditolak dengan 1, dan hari boleh dimasukkan terus. Kaedah ini jarang digunakan, dan kaedah kedua biasa digunakan. Kaedah ini adalah untuk menukar rentetan yang mematuhi format tertentu, seperti yyyy-MM-dd, kepada data jenis Tarikh. Mula-mula, tentukan objek jenis Date Date

Fungsi letupan dalam PHP ialah fungsi yang digunakan untuk memisahkan rentetan kepada tatasusunan Ia sangat biasa dan fleksibel. Dalam proses menggunakan fungsi letupan, kami sering menghadapi beberapa ralat dan masalah Artikel ini akan memperkenalkan penggunaan asas fungsi letupan dan menyediakan beberapa kaedah untuk menyelesaikan laporan ralat. 1. Penggunaan asas fungsi explode Dalam PHP, sintaks asas fungsi explode adalah seperti berikut: explode(string$separator,string$stri

Terdapat banyak perpustakaan kalendar dan pustaka tarikh yang sangat baik dalam Python untuk kami gunakan Perpustakaan ini boleh membantu kami mengendalikan operasi berkaitan tarikh dan kalendar. Seterusnya, saya akan memperkenalkan anda kepada beberapa pilihan biasa dan memberikan contoh kod yang sepadan. Pustaka Datetime: Datetime ialah modul pemprosesan tarikh dan masa terbina dalam Python Ia menyediakan banyak kelas dan kaedah berkaitan tarikh dan masa, yang boleh digunakan untuk memproses tarikh, masa, perbezaan masa dan operasi lain. Kod contoh: importdatetime#Dapatkan tarikh semasa

Tajuk: Ralat dan penyelesaian biasa apabila menggunakan fungsi explode dalam PHP Dalam PHP, fungsi explode ialah fungsi biasa yang digunakan untuk memisahkan rentetan kepada tatasusunan. Walau bagaimanapun, beberapa ralat biasa boleh berlaku disebabkan penggunaan yang tidak betul atau format data yang salah. Artikel ini akan menganalisis masalah yang mungkin anda hadapi apabila menggunakan fungsi letupan dan menyediakan penyelesaian serta contoh kod khusus. Kesilapan 1: Parameter pembatas tidak diluluskan. Apabila menggunakan fungsi letupan, salah satu kesilapan yang paling biasa ialah parameter pembatas tidak diluluskan.
