delphi中客户端如何获得服务器时钟时间

delphi中客户端如何获得服务器时钟时间,第1张

如果要实时显示服务器时间,最好先同步服务器时间,然后用timer显示本地时间。

1、获取服务器时间

如果取数据服务器时间,可以用sql取,如oracle的sysdate。。。select sysdate from dual

如果取应用服务器时间,可以在服务器写个远程方法取服务器本地时间 如:now,,然后客户端调用

2、客户端同步服务器时间 uses windows;setsystemtime();

3、timer定时刷新本地时间

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

Systemoutprintln(dateAndTime toString());

网页前端是无法获取到服务器时间的,只有通过后台取值然后进行传递。 使用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>

启动的时候,都有提示吧。。。

不知道你是怎么启动的。。。

实在不行,安装一个Eclipse,在eclipse下启动就可以看到时间了。呵呵。

我的就是eclipse,不过,我看我同学在cmd下,也是可以启动。不知道怎么弄的。而且有时间显示

语句:GETDATE()

示例:SELECT

GETDATE()

获取当前时间:Select

To_Char

(SYSDATE,'MM-DD-YYYY

HH24:MI:SS')

"nowTime"

from

dual

getdate()其他常用方式:

1、Select

Convert(varchar,getdate(),120)

--传唤时间格式(yyyy-mm-dd

hh:mi:ss)

--23(

年月日

)

2、Select

DATEDIFF(day,getdate(),convert(datetime,'2008-08-08

18:00:00',120))

--时间差

3、Select

DATENAME(dw,getdate())

--当前时间是一周内的第几天(中文,返回NVARCHAR型)

4、Select

DATEPART(dw,getdate())

--当前时间是一周内的第几天(星期日为一周的第一天,返回INT型)

jsp中的服务器时间可以这么实现:

<%@ page language="java" import="javautil" pageEncoding="gb2312"%>

<html>

<body onload="disptime();">

<FORM NAME="myform">

<DIV align="center">

<SCRIPT language="JavaScript">

<!--

function disptime( )

{

var time = new Date( ); //获得当前时间

var year = timegetYear( );//获得年、月、日

var month = timegetMonth( );

var day = timegetDay( );

var hour = timegetHours( ); //获得小时、分钟、秒

var minute = timegetMinutes( );

var second = timegetSeconds( );

var apm="AM"; //默认显示上午: AM

if (hour>12) //按12小时制显示

{

hour=hour-12;

apm="PM" ;

}

if (minute < 10) //如果分钟只有1位,补0显示

minute="0"+minute;

if (second < 10) //如果秒数只有1位,补0显示

second="0"+second;

/设置文本框的内容为当前时间/

documentmyformmyclockvalue =year+"年"+month+"月"+day+"日 "+hour+":"+minute+":"+second+" "+apm;

/设置定时器每隔1秒(1000毫秒),调用函数disptime()执行,刷新时钟显示/

var myTime = setTimeout("disptime()",1000);

}

//-->

</SCRIPT>

动态显示时间<INPUT name="myclock" type="text" value="" size="25">

<br>

静态显示时间 <%=new javautilDate()%>

DATE()所调用的时间是服务器主机的时间。

如果你是用自己的机器当服务器的话,那DATE()调用的时间就是你本机的时间;

如果你把页面传到其他网络空间中执行的话,那DATE()调用的就是该网络空间所对应的主机时间。

你写的$dNowHour = (date(H)+8)"时"; 不就是加8小时吗?

配置PHPini中的信息对DATE()函数是不起作用的。

郁闷的第二次回答

谁告诉你的GMT+8时区的时间是(date(H)+8)这么写的?

date(H)本身输出的值就是0-23的整型变量,你后+8这并不表示GMT+8时区啊,这是在做整型的求和运算啊。你的$dNowHour变量的值肯定比当前服务器上的时间多了8个小时啊。

如果想输出GMT+8的准确时间只要去掉+8就可以了,因为你现在就在东八区,所有的时间都是GMT+8时间,你根本不需要用+8的方法来画蛇添足了。

下面我给你列出所有DATE()函数的FORMAT参数,你自己看吧。

a 小写的上午和下午值 am 或 pm

A 大写的上午和下午值 AM 或 PM

B Swatch Internet 标准时 000 到 999

d 月份中的第几天,有前导零的 2 位数字 01 到 31

D 星期中的第几天,文本表示,3 个字母 Mon 到 Sun

F 月份,完整的文本格式,例如 January 或者 March January 到 December

g 小时,12 小时格式,没有前导零 1 到 12

G 小时,24 小时格式,没有前导零 0 到 23

h 小时,12 小时格式,有前导零 01 到 12

H 小时,24 小时格式,有前导零 00 到 23

i 有前导零的分钟数 00 到 59>

I 是否为夏令时 如果是夏令时为 1,否则为 0

j 月份中的第几天,没有前导零 1 到 31

l(“L”的小写字母) 星期几,完整的文本格式 Sunday 到 Saturday

L 是否为闰年 如果是闰年为 1,否则为 0

m 数字表示的月份,有前导零 01 到 12

M 三个字母缩写表示的月份 Jan 到 Dec

n 数字表示的月份,没有前导零 1 到 12

O 与格林威治时间相差的小时数 例如:+0200

r RFC 822 格式的日期 例如:Thu, 21 Dec 2000 16:01:07 +0200

s 秒数,有前导零 00 到 59>

S 每月天数后面的英文后缀,2 个字符 st,nd,rd 或者 th。可以和 j 一起用。

t 给定月份所应有的天数 28 到 31

T 本机所在的时区 例如:EST,MDT(译者注在 Windows 下为完整文本格式,例如“Eastern Standard Time”,中文版会显示“中国标准时间”)。

U 从 Unix 纪元(January 1 1970 00:00:00 GMT)开始至今的秒数 参见 time()

w 星期中的第几天,数字表示 0(表示星期天)到 6(表示星期六)

W ISO-8601 格式年份中的第几周,每周从星期一开始(PHP 410 新加的) 例如:42(当年的第 42 周)

Y 4 位数字完整表示的年份 例如:1999 或 2003

y 2 位数字表示的年份 例如:99 或 03

z 年份中的第几天 0 到 366

Z 时差偏移量的秒数。UTC 西边的时区偏移量总是负的,UTC 东边的时区偏移量总是正的。 -43200 到 43200

无奈的第三次回答

不知道为什么会这样,如果你自己的机器是服务器的话,DATE函数调用的时间应该为你机器的当前时间,我做这么长时间还没见过这个时间不一致的。不知道是该佩服你的机器呢还是该佩服老兄你。怎么搞出来的?

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » delphi中客户端如何获得服务器时钟时间

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情