winform程序如何取得数据库服务器的时间

winform程序如何取得数据库服务器的时间,第1张

程序启动时,从数据库获取服务器时间,在客户端定义时间变量同步,然后客户端每次取时间从这个变量里面来,

建议还是不要1秒从数据库查询一次,当然如果是1分钟或者1小时,用timer也无所谓了

具体来说有这么几种思路吧:

轮询,就像你说的那样不间断的和服务器通信,比如每秒甚至更短就发起一次请求获取服务器时间,然后利用Ajax的readyState来确定从请求发起到收到回复过去的时间不会太长。

WebSocket,利用WebSocket来实时通信。

服务器当然不会蹦掉……而且如果你要做的是一个倒计时那情况就更简单了,比如说在倒计时结束之前服务器对这些请求都不回复,让请求TimeOut,只有在倒计时结束后才回复给客户端,这样就能节省流量。

而且现在有很多这种免费的时间API服务。这里: wwwtimeapiorg/ 就是一个。这个API会直接返回UTC字符串。如果担心服务器压力的话用这种服务就好了。

另外,很重要的一点要提醒你。不论是什么数据,不论是不是从客户端上提取出来的,只要是在客户端上处理的就必须默认这个数据不可靠。不论你怎么从服务器获取时间,你都要认为这个时间很有可能已经被动过了。如果是抽奖这样的任务的话必须全程在服务器上处理。客户端代码关于数据的功能只有两个:向用户显示数据,从用户提取数据。

网页前端是无法获取到服务器时间的,只有通过后台取值然后进行传递。 使用Ajax每秒获取服务器的时间并显示出来,但是服务器网络延迟较高,这样误差较大。

示例采用Head的方法处理,第一次页面加载时从服务器端获得时间,以这个时间为基准,客户端再用js每秒累加。

完整代理示例:

<html>

<head>

<title>html网页获取服务器的时间</title>

<script language="JavaScript" type="text/javascript">

<!--程序执行需要耗费时间,误差在2秒以下-->

var xmlHttp = false;

<!--获取服务器时间-->

try {

xmlHttp = new ActiveXObject("Msxml2XMLHTTP");

} catch (e) {

try {

    xmlHttp = new ActiveXObject("MicrosoftXMLHTTP");

} catch (e2) {

    xmlHttp = false;

}

}

if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {

xmlHttp = new XMLHttpRequest();

}

xmlHttpopen("GET", "

, false);

xmlHttpsetRequestHeader("Range", "bytes=-1");

xmlHttpsend(null);

severtime=new Date(xmlHttpgetResponseHeader("Date"));

<!--获取服务器日期-->

var year=severtimegetFullYear();

var month=severtimegetMonth()+1;

var date=severtimegetDate();

<!--获取服务器时间-->

var hour=severtimegetHours();

var minu=severtimegetMinutes();

var seco=severtimegetSeconds();

<!--格式化输出服务器时间-->

function getSeverTime(){

seco++;

if(seco==60){

minu+=1;

seco=0;

}

if(minu==60){

   hour+=1;

   minu=0;

}

if(hour==24){ 

date+=1;

hour=0;

}

<!--日期处理-->

if(month==1||month==3||month==5||month==7

||month==8||month==10||month==12)

{

if(date==32)

{

   date=1;

   month+=1;

   }

}else if(month==4||month==6||month==9||month==11){

if(date==31){

   date=1;

   month+=1;

   }

}else if(month==2){

   if(year%4==0&&year%100!=0){<!--闰年处理-->

    if(date==29){

     date=1;

     month+=1;

    }

   }else{

    if(date==28){

     date=1;

     month+=1;

    }

   }

}

if(month==13){

year+=1;

month=1;

}

sseco=addZero(seco);

sminu=addZero(minu);

shour=addZero(hour);

sdate=addZero(date);

smonth=addZero(month);

syear=year;

innerdata="当前服务器时间:";

documentgetElementById("servertime")innerHTML=innerdata+syear+"-"+smonth+"-"+sdate+" "+shour+":"+sminu+":"+sseco;

setTimeout("getSeverTime()",1000);

setTimeout("getClientTime()",100);

}

function addZero(num) {

num=Mathfloor(num);

return ((num <= 9)  ("0" + num) : num);

}

</script>

</head>

<body onLoad="getSeverTime();">

<p id="servertime"></p>

<p id="clienttime"></p>

<p id="xctime"></p>

</body>

</html>

扩展网页前端获取当前时间,调用date()函数即可。

示例代码:

<span id="cg"></span>

<script>setInterval("cginnerHTML=new Date()toLocaleString()",1000);</script>

在窗体中建一个文本框和时间控件,可以在文本框中显示跳动的服务器时间

Private Sub Form_Load()

Timer1Interval = 300

End Sub

Private Sub Timer1_Timer()

Dim cnn As New ADODBConnection

Dim cmd As New ADODBCommand

Dim rst As New ADODBRecordset

Dim Sqlser_time

cnnConnectionString = "driver={SQL Server};" & _

"server=server;uid=sa;pwd=;database=master"

cnnOpen

cmdActiveConnection = cnn

cmdCommandText = "SELECT GETDATE() AS sys_Sqlser_time"

Set rst = cmdExecute

Sqlser_time = rst(0)

Text1Text = Sqlser_time

rstClose

cnnClose

End Sub

Date dateAndTime = new Date() //Java获取服务器当前日期和时间

Systemoutprintln(dateAndTime toString());

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » winform程序如何取得数据库服务器的时间

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情