当前位置:首页 > CN2资讯 > 正文内容

获取windows服务器时间 java

6分钟前CN2资讯


用php的时候可能经常会用到标准时间,有两个办法。

第一种方法:

获取服务器的时间

首先配置php.ini中的date.timezone = PRC或者直接在程序页面加入date_default_timezone_set("PRC"); 然后就可以使用time()或date(''Y-m-d H:i:s)

有一种情形是这样子的,比如机票业务中的订票流程,我们需要一个非常可靠的当前时间来支持,尽管大多数服务器的时间是非常准确的,我们使用time()来获取的时间是可靠的,但未免会有不确切的情况,也有的服务器由于未开启ntp(Network Time Protocol ) 来进行时间同步,再由于硬件环境等因素,导致时间五花八门,这在通常,也就差个几分钟、最多几个小时的情况是无可厚非的,因为在同一个网站使用的是同一个 时间,可是有的时候这样很糟糕。在internet上,有免费专门提供UTC时间校正的授时服务器,使用NTP协议,这个可以参考前面的链接来获取更多知 识。他提供的时间误差在20ms左右(不要说在数据传输过程中会耗费的时间不等,NTP早就考虑到了这一点),因此通过这种授时服务器,我们就能得非常可 信的当前时间。

我们现在就来看看用PHP怎么获取到非常精准的UTC时间,由于NTP协议稍微有一点点的不好用,我们有一个更好的协议可以用,他就是Daytime Protocol协议,通过这个协议我们可以直接得到文本数据,这样处理起来会更加方便。我们使用的时间服务,代码非常简单, 用TCP连接它的13端口就可以了。

$fp=fsockopen('',13,$errno,$errstr,90); echo fread($fp,2010);

获得到的数据类似于这样的:

55545 10-12-15 21:40:47 00 0 0 113.1 UTC(NIST) *

这个串的每个部分都有意义,具体的请参看:http://www.nist.gov/pml/div688/grp40/its.cfm ,现在我们只关心中间的部分和206.9前面的那个0,它表示服务器的健康状况,也反映当前的时间是否可信。

OK了,用PHP实现获得准确的UTC时间,这个应用在对时间要求非常苛刻的场合还是很有价值的,到此,我的问题也算解决了。

知道了UTC 标准时间, 剩下的就是转换成世界时间了,参看 php获取当地时间 time zone

$fp=fsockopen('',13,$errno,$errstr,90); $ufc = explode(' ',fread($fp,date('Y'))); $date = explode('-',$ufc[1]); $processdate = $date[1].'-'.$date[2].'-'. date('Y').' '.$ufc[2]; switch($ufc[5]) { case 0: echo '精确'; break; case 1: echo '误差:0-5s'; break; case 2: echo '误差: > 5s'; break; default: echo '硬件出错!'; break; } echo gmttolocal($processdate,8); // 中国 function gmttolocal($mydate,$mydifference) { $datetime = explode(" ",$mydate); $dateexplode = explode("-",$datetime[0]); $timeexplode = explode(":",$datetime[1]); $unixdatetime = mktime($timeexplode[0]+$mydifference,$timeexplode[1],0,$dateexplode[0],$dateexplode[1],$dateexplode[2]); return date("m/d/Y H:i:s",$unixdatetime); }

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() 转换成无搁置模式。

    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/32723.html

    分享给朋友:

    “获取windows服务器时间 java” 的相关文章

    解决Linode被封的问题与账户恢复策略分享

    Linode作为一款备受欢迎的美国VPS,其灵活性和服务质量吸引了众多用户。然而,基于我的经验,国内用户在使用Linode时常常面临被封的困扰。这不仅影响了使用体验,也对业务的持续性造成了影响。我想深入分析一下Linode被封的原因。 首先,Linode的全球网络状况在近年来遭遇了严峻挑战。随着越来...

    无限流量VPS:完美解决高流量需求的虚拟专用服务器方案

    大家好,今天我们来聊聊无限流量VPS,这个在市场上越来越受欢迎的虚拟专用服务器选项。无限流量VPS是指用户在支付固定的月租或年租费用后,能够无后顾之忧地使用数据流量。这样的服务到底有什么神奇之处,为什么越来越多的人选择它,我带你一起看看。 说到无限流量VPS,它的核心在于“无限流量”。想象一下,你的...

    Debian 修改 DNS 的详细步骤与常见问题解决方案

    在讨论 Debian 中的 DNS 修改前,我想先和大家分享一些关于 DNS 的基本信息。DNS(Domain Name System)是互联网的“电话簿”,它将我们可读的网站地址(如 www.example.com)转换为计算机能够理解的 IP 地址。这一过程对于我们浏览网页、发送邮件等操作至关重...

    连接测试地址的全面解析与故障排查技巧

    在网络管理和故障排查的过程中,连接测试地址扮演了重要角色。这些特定的IP地址并不指向任何实际的网络设备,因此在进行网络测试时,它们能够确保不会对现有的网络结构造成影响。简单来说,连接测试地址允许我们在不干扰现有设备的情况下,检查和验证网络的状态。 说到连接测试地址,我想起两个常见的:127.0.0....

    内部错误解决指南:快速识别与处理方法

    一说到“内部错误”,我们很多人可能会感到一头雾水。其实,内部错误是指在计算机系统或程序内部发生的那种错误。这类错误通常是由于系统内部的某些故障所造成的,或是程序代码本身的一些问题。如果我们把计算机比作一个庞大的工厂,那么内部错误就像是工厂里机器运转不畅或部件失灵,导致整个生产线出现问题。 理解内部错...

    提升游戏体验的利器:steamsv工具使用指南

    1.1 steamsv简介 我最近发现了一个非常实用的工具,叫做steamsv。它的主要功能是帮助用户在Steam平台上实现各种定制和优化,特别适合那些热爱游戏的朋友。对我而言,steamsv不仅简单易用,还能提供额外的便利,让我的游戏体验更加顺畅。 steamsv特别适合那些希望改善下载速度、减少...