在此之前,我写过比较多的时钟同步,但都要借助于开发语言,要运行在一定环境当中,现尝试直接用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>
分享到:
相关推荐
嵌入式Linux设备的高精度IEEE 1588时钟同步实现 一、概述 IEEE 1588是一种用于解决分布式网络测控系统中远距离仪器设备之间的同步问题的时钟同步协议。该协议于2002年被IEEE批准,并于2008年进行了修订。IEEE 1588...
其中,时钟同步技术是实现高效、精准控制的关键环节。本文将深入探讨EtherCAT时钟同步技术的研究及其在实际应用中的重要性。 首先,我们要理解时钟同步的基本概念。在分布式系统中,所有设备需要有一个共同的时间...
时钟同步是现代通信、计算机网络以及众多高科技领域不可或缺的核心技术之一,其核心目标在于确保分布在不同地理位置的设备能够共享一个统一的时间基准,从而实现高效、准确的数据交换和处理。时钟同步主要涵盖两大...
### SIMATIC PCS7 V6.1 时钟同步详解 #### 摘要 本文将深入探讨SIMATIC PCS7 V6.1系统中时钟同步的实现方法,并提供两种不同的时钟同步方案。通过这两种方案,可以确保PCS7系统内的各个组件能够保持时间的一致性,...
在Windows环境下,使用C++和MFC(Microsoft Foundation Classes)编写PTP时钟同步程序,可以实现毫秒级的时间同步精度。MFC是微软提供的一个C++库,它为开发Windows应用程序提供了一种面向对象的框架。 该程序采用...
在IT领域,时钟同步是一项重要的技术,尤其是在分布式系统、网络通信和实时应用中。C#作为.NET框架下的主要编程语言,提供了丰富的类库来实现时钟同步功能。本篇文章将详细探讨C#中实现时钟同步的相关知识点,并提供...
**IEEE1588-2008时钟同步协议标准** 时钟同步在现代通信系统、网络设备和分布式系统中扮演着至关重要的角色。它确保了数据在传输过程中的精确性和一致性,尤其是在实时应用如电力系统、电信网络、自动化控制和测量...
Linux时钟同步的方法 Linux系统中的时钟同步是指将Linux系统的时钟与一个公共的时钟源同步,以确保系统时钟的准确性。时钟同步的方法可以分为两类,一类是使用NTP(Network Time Protocol)服务器来同步时钟,另一...
在讨论基于STM32F107VC微处理器实现IEEE 1588精密时钟同步的过程中,我们首先需要了解IEEE 1588标准,也称为精确时间协议(PTP),其设计目的是在网络化和分布式系统中提供高精度的时钟同步功能。随着这些系统的应用...
主要通过MATLAB实现时钟同步,进行仿真分析。本系统采用前导符号作为定时同步符号,前导符号采用CAZAC序列。
H3C的NTP(网络时间协议)时钟同步基础配置案例提供了对这一过程的详细解释,适合初入网络工程领域的学习者。 NTP是一种用于同步网络中多个计算机时间的协议,它允许设备通过互联网或其他网络与时间服务器进行通信,...
在本文中,我们将深入探讨基于STM32微控制器的UWB(Ultra-Wideband)定位系统,特别是关于TDOA(Time Difference of Arrival)无线时钟同步源代码的关键概念和技术细节。 UWB定位技术是一种无线通信技术,它利用极...
【1588时钟同步原理】是网络通信领域中用于实现高精度时间与频率同步的协议,全称为“精密时间协议”(Precision Time Protocol),是IEEE 1588标准的一部分,分为1588v1和1588v2两个版本。1588v1提供亚毫秒级别的...
【标题】"电脑时钟同步VB6.0源代码"涉及的是使用Visual Basic 6.0(VB6)编程语言实现的一种技术,该技术能够帮助用户实现计算机时钟与局域网内的时间服务器进行同步,确保本地计算机的时间准确无误。在日常工作中,...
"基于BP神经网络模型时钟同步误差补偿算法.pdf" 本文提出了一种基于BP神经网络模型的时钟同步误差补偿算法,旨在解决水下传感器网络时钟同步精度问题。该算法首先采用深海拉格朗日洋流模型描述水下节点运动规律,...
本文将详细讲解如何实现S7-1200 PLC(可编程逻辑控制器)与HMI(人机界面)设备的系统时钟同步,以确保两者之间的通信无误。 首先,我们需要创建一个新的验证项目。在这个项目中,我们将配置一个S7-1214C PLC和一个...
### 对立统一——异步时钟同步化 #### 一、什么是对立统一 在讨论异步时钟同步化之前,我们首先理解“对立统一”的概念。在FPGA设计领域,“对立统一”主要指的是系统中不同频率时钟信号之间存在的矛盾与协调。...