用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教程有兴趣的朋友有所帮助。

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)实现databasequerycachingusingpdotominiminimizedatabasehits.3)usehttp/2tomultiplexrequlexrequestsandredececonnection.4 limitsclection.4.4

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

databasequeryOptimizationinphpinvolVolVOLVESEVERSEVERSTRATEMIESOENHANCEPERANCE.1)SELECTONLYNLYNESSERSAYCOLUMNSTORMONTOUMTOUNSOUDSATATATATATATATATATATRANSFER.3)


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

Dreamweaver Mac版
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。