时钟同步

在此之前,我写过比较多的时钟同步,但都要借助于开发语言,要运行在一定环境当中,现尝试直接用js角本编写,可直接在浏览器中运行。

先创建一个dateTime.js时钟同步:

<!-- Begin
var timerRunning = false;
var timezone = "北京时间:";
var adjust = 0;

function timeCheck(tzone, diff) {
if (timerRunning) {
clearTimeout(updatetime);
timerRunning = false; }
gmtOffset=eval(diff+adjust);
timezone = tzone;
checkDateTime();
}

function checkDateTime () {
var today = new Date();
var year = today.getYear() + 00;
var month = today.getMonth()+1;
var date = today.getDate();
var day = today.getDay();
var hour = today.getHours();
var minute = today.getMinutes();
var second = today.getSeconds();

var lastSat = date - (day+1);
while (lastSat < 32) lastSat+=7;
if (lastSat > 31) lastSat+=-7;
var firstSat = date - (day+1);
while (firstSat > 0) firstSat+=-7;
if (firstSat < 1) firstSat+=7;
if ((((month == 4) && (date >= firstSat)) || month > 4) &&
(month < 11 || ((month == 10) && day <= lastSat))) adjust += 60;
yourOffset = (new Date()).getTimezoneOffset();
yourOffset = yourOffset + adjust;

var xx = navigator.appName
var xy = navigator.appVersion;
xy = xy.substring(0,1);
if ((xy == 4) && (xx == "Netscape")) yourOffset = yourOffset+adjust;
if ((((month == 4) && (date > 20)) || month > 4) && (month < 11 || ((month == 10) &&
day < 30))) adjust -= 60;

ourDifference = eval(gmtOffset - yourOffset);
var half = eval(ourDifference % 60);
ourDifference = Math.round(ourDifference / 60);
hour = eval(hour - ourDifference);
var m = new Array("",
"1","2","3",
"4","5","6",
"7","8","9",
"10","11","12");
var leap = eval(year % 4);

if ((half == -30) || (half == 30)) minute += 30;
if (minute > 59) minute -= 60, hour++;
if (minute < 0) minute += 60, hour--;
if (hour > 23) hour -= 24, date += 1;
if (((month == 4) || (month == 6) ||
(month == 9) || (month == 11)) && (date==31)) date = 1, month ++;
if (((month == 2) && (date > 28)) && (leap != 0)) date = 1, month ++;
if ((month == 2) && (date > 29)) date = 1, month++;
if (hour < 0) hour += 24, date --;
if ((date == 32) && (month == 12)) month = m[1], date = 1, year++;
if (date == 32) date = 1, month++;
if ((date < 1) && (month == 1)) month= m[12], date = 31, year--;
if (date < 1) date = 31, month --;
if (((month == 4) || (month == 6) ||
(month== 9) || (month == 11)) && (date == 31)) date = 30;
if ((month == 2) && (date > 28)) date = 29;
if (((month == 2) && (date > 28)) && (leap != 0)) date=28;
for (i=1; i<13; i++) {
if (month == i) {
month = m[i]; break;
}
}

var dateTime = hour;
dateTime = ((dateTime < 10) ? "0":"") + dateTime;
dateTime = " " + dateTime;
dateTime += ((minute < 10) ? ":0" : ":") + minute;
dateTime += ((second < 10) ? ":0" : ":") + second+",";
//dateTime += (hour >= 12) ? "下午, " : "上午, ";
dateTime += year + "年" + month + "月" + date + "日" ;
dateTime +="<br>"+getGreet(hour);

document.all.time.innerHTML = timezone+dateTime;
updatetime=setTimeout("checkDateTime()", 900);
timerRunning = true;
}

function getGreet(hr){
var s="";
if (hr ==1)
s="凌晨一点已过,别忘了休息喔!";
if (hr ==2)
s="该休息了,身体可是革命的本钱啊!";
if (hr ==3)
s="夜深人静,只有你敲击鼠标的声音...";
if (hr ==4)
s="四点过了,你明天不上班???";
if (hr ==5)
s="该去晨运了!!!";
if (hr ==6)
s="你知道吗,此时是国内网络速度最快的时候!";
if (hr ==7)
s="新的一天又开始了,祝你过得快乐!";
if ((hr ==8) || (hr == 9) || (hr ==10))
s="上午好!今天你看上去好精神哦!";
if (hr ==11)
s="十一点过了,事情做完了吗?";
if (hr ==12)
s="十二点过了,还不下班?";
if ((hr==13) || (hr==14))
s="你不睡午觉?";
if ((hr==15) || (hr==16) || (hr==17))
s="下午好!";
if ((hr==18) || (hr==19))
s="吃晚饭了吧?";
if ((hr==20) || (hr==21) || (hr==22))
s="今晚又在这玩电脑了,没节目?";
if (hr==23)
s="真是越玩越精神,不打算睡了?";
if (hr==0)
s="凌晨了,还不睡?";
return s;
}
// End -->


test.html时钟同步测试:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>简单HTML</title>
<meta name="author" content="Yeeku.H.Lee" />
<meta name="website" content="http://www.crazyjava.org" />
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />

<script src="dateTime.js" type="text/javascript"></script>
</head>
<body onLoad="timeCheck(timezone,-420)">
<div id="time" ></div>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值