怎样获取远程主机或者服务器的操作系统的当前时间?
远程获取服务器时间可同通过php的一个时间函数获取,用到的工具:notepad++,ftp,步骤如下:
通过notepad++写一个php文件另存为timephp。
2通过ftp上传到服务器一个网站目录下边,通过浏览器访问,结果如下:
注意事项:服务器必须安装php网站环境。
程序启动时,从数据库获取服务器时间,在客户端定义时间变量同步,然后客户端每次取时间从这个变量里面来,
建议还是不要1秒从数据库查询一次,当然如果是1分钟或者1小时,用timer也无所谓了
程序集 窗口程序集1
子程序 _按钮1_被单击
局部变量 XML对象, 对象
局部变量 时间文本, 文本型
按钮1禁止 = 真
如果真 (XML对象创建 (“MSXML2XMLHTTP”, ) = 假)
如果真 (XML对象创建 (“MicrosoftXMLHTTP”, ) = 假)
返回 ()
如果真结束
如果真结束
XML对象方法 (“open”, 编辑框2内容, 编辑框1内容, 假)
XML对象方法 (“send”, )
时间文本 = XML对象读文本属性 (“getResponseHeader”, “Date”)
标签1标题 = “当前服务器时间为:” + 到文本 (时间格式化 (时间文本))
按钮1禁止 = 假
子程序 时间格式化, 日期时间型
参数 时间文本, 文本型
局部变量 临时数组, 文本型, , "0"
局部变量 临时变量, 文本型
局部变量 时间变量, 日期时间型
局部变量 临时时间, 日期时间型
局部变量 日, 文本型
局部变量 月, 文本型
局部变量 年, 文本型
局部变量 时, 文本型
局部变量 分, 文本型
局部变量 秒, 文本型
临时数组 = 分割文本 (时间文本, “, ”, )
临时变量 = 临时数组 [2]
临时变量 = 子文本替换 (临时变量, “ GMT”, , , , 真)
清除数组 (临时数组)
临时数组 = 分割文本 (临时变量, “ ”, )
日 = 临时数组 [1]
判断开始 (临时数组 [2] = “Jan”)
月 = “01”
判断 (临时数组 [2] = “Feb”)
月 = “02”
判断 (临时数组 [2] = “Mar”)
月 = “03”
判断 (临时数组 [2] = “Apr”)
月 = “04”
判断 (临时数组 [2] = “Mar”)
月 = “05”
判断 (临时数组 [2] = “Jun”)
月 = “06”
判断 (临时数组 [2] = “Jul”)
月 = “07”
判断 (临时数组 [2] = “Aug”)
月 = “08”
判断 (临时数组 [2] = “Sep”)
月 = “09”
判断 (临时数组 [2] = “Oct”)
月 = “10”
判断 (临时数组 [2] = “Nov”)
月 = “11”
判断 (临时数组 [2] = “Dec”)
月 = “12”
默认
判断结束
年 = 临时数组 [3]
临时变量 = 临时数组 [4]
清除数组 (临时数组)
临时数组 = 分割文本 (临时变量, “:”, )
时 = 到文本 (到整数 (临时数组 [1]))
分 = 临时数组 [2]
秒 = 临时数组 [3]
时间变量 = 到时间 (年 + “/” + 月 + “/” + 日 + “/” + 时 + “/” + 分 + “/” + 秒)
时间变量 = 增减时间 (时间变量, #小时, 8) ' 转换为北京时间
返回 (时间变量)
如果想返回服务器日期,时间包括秒,请用<%=now()%>
这里附带下:<%=date()%>显示日期 例如:2006-6-30
<%=Time()%>显示时间 例如:21:12:12
正如楼上所说的,js只能操作客户端的东西。在客户端时刻显示并更新服务器的时间应该是不可能的,因为会由于网络延迟的因素使得时间不精确。
打个比方,可以使用ajax每秒钟获取服务器的时间,然后再显示出来,但是可能这个用户的网络延迟比较厉害,他请求的这个时间过了两三秒才返回给客户端,那这样更新时间就不精确了。
也可以这样,第一次从服务器那里获取时间,然后再客户端用js,每秒累加数,就是以获取服务器的那个时间为起掉,用客户端代码每秒累加这个时间
下面是公司的代码,调整成ADO控件,给你参考一下:
function GetNetDate: TDateTime;begin
with TADOQueryCreate(nil) do
begin
try
Connection := ADOConnection1; // 绑定数据库连接对象
if SelfDBEServiceDBType = dtMSSQL then // 这里你自己处理一下,公司代码的意思是,如果当前数据库是MSSQL Server
SQLAdd('SELECT GETDATE() AS CURDATE ')
else SelfDBEServiceDBType = dtOracle then // 如果当前数据库是Oracle
SQLAdd('SELECT SysDate AS CURDATE FROM DUAL ');
Open;
Result := FieldByName('CURDATE')AsDateTime;
finally
Free;
end;
end;
end;
简单的说,MSSQL数据库,使用“Select GetDate() ”这样的SQL语句获取数据库服务器时间,而Oracle则使用“Select SysDate”这样的SQL语句。
0条评论