delphi中客户端如何获得服务器时钟时间
如果要实时显示服务器时间,最好先同步服务器时间,然后用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函数调用的时间应该为你机器的当前时间,我做这么长时间还没见过这个时间不一致的。不知道是该佩服你的机器呢还是该佩服老兄你。怎么搞出来的?
0条评论