时钟和时区

时钟实例:

实例代码:

----------------------------------------------------------

<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Generator" content="">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>时钟</title>
  <style>
*{padding:0;margin:0}
ul,li{list-style:none;}
body{background:#FFFFCC;font-family:"微软雅黑"}
.box{width:200px;height:200px;border-radius:50%;margin:100px auto;position:relative;}
/*刻度*/
#kedu li{position:absolute;width:2px;height:6px;background:#111;left:99px;top:0px;transform-origin:center 100px}
#kedu li:nth-child(5n+1){height:15px;}
/*
#kedu li:nth-child(1){transform:rotate(0deg)}
#kedu li:nth-child(2){transform:rotate(6deg)}
#kedu li:nth-child(3){transform:rotate(12deg)}*/
/*时分秒针*/
#hour{width:8px;height:45px;background:#000;position:absolute;top:55px;left:96px;transform-origin:bottom}
#min{width:4px;height:55px;background:green;position:absolute;top:45px;left:98px;transform-origin:bottom}
#sec{width:2px;height:65px;background:red;position:absolute;top:35px;left:99px;transform-origin:bottom}
/*圆心*/
.box .radius{width:16px;height:16px;background:#111;position:absolute;top:92px;left:92px;border-radius:50%}
.cradius{width:100px;height:100px;background:#11f;border-radius:50%;
color:#fff;text-align:center;line-height:100px;margin-left:200px;
transform-origin:top;cursor: pointer;}
.cradius:hover{transform:rotate(360deg);transition:all 3s ease;}
  </style>
 </head>
 <body>
<div class="box">
<!--刻度-->
<ul id="kedu"></ul>
<!--时分秒针-->
<div id="hour"></div>
<div id="min"></div>
<div id="sec"></div>
<!--圆心-->
<div class="radius"></div>
</div>
<div id="timer"></div>
<div id="timer2"></div>
<div id="timer3"></div>
<div id="timer4"></div>
<div class="cradius">旋转</div>
<script type="text/javascript">
/*
@descrition 时钟和时区
@date:2015-08-01 23:66
@author:keke
知识点:
a:javascript 闭包 
b:css3圆心和旋转
c:border-radius
d:定位position
辅助知识点:Date类
实现步骤:
1:如果画圆
2:如果产生时分秒针
4:如果产生刻度
5:如何让时分秒针进行旋转
6:时区时间的计算
7:如何封装
新的知识点:一个表盘360度,分了60个格子,每个格子就是6度
每个五个格子就是一个小时:30度=1小时
*/
/**
 * 对Date的扩展,将 Date 转化为指定格式的String 月(M)、日(d)、12小时(h)、24小时(H)、分(m)、秒(s)、周(E)、季度(q)
 * 可以用 1-2 个占位符 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字) eg: (new
 * Date()).format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423 (new
 * Date()).format("yyyy-MM-dd E HH:mm:ss") ==> 2009-03-10 二 20:09:04 (new
 * Date()).format("yyyy-MM-dd EE hh:mm:ss") ==> 2009-03-10 周二 08:09:04 (new
 * Date()).format("yyyy-MM-dd EEE hh:mm:ss") ==> 2009-03-10 星期二 08:09:04 (new
 * Date()).format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18
 */
Date.prototype.format = function(fmt) {
var o = {
"Y+" : this.getFullYear(),
"M+" : this.getMonth() + 1,
// 月份
"d+" : this.getDate(),
// 日
"h+" : this.getHours() % 12 == 0 ? 12 : this.getHours() % 12,
// 小时
"H+" : this.getHours(),
// 小时
"m+" : this.getMinutes(),
// 分
"s+" : this.getSeconds(),
// 秒
"q+" : Math.floor((this.getMonth() + 3) / 3),
// 季度
"S" : this.getMilliseconds()
// 毫秒
};
var week = {
"0" : "/u65e5",
"1" : "/u4e00",
"2" : "/u4e8c",
"3" : "/u4e09",
"4" : "/u56db",
"5" : "/u4e94",
"6" : "/u516d"
};
if (/(y+)/.test(fmt)) {
fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "")
.substr(4 - RegExp.$1.length));
}
if (/(E+)/.test(fmt)) {
fmt = fmt
.replace(
RegExp.$1,
((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? "/u661f/u671f"
: "/u5468")
: "")
+ week[this.getDay() + ""]);
}
for ( var k in o) {
if (new RegExp("(" + k + ")").test(fmt)) {
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k])
: (("00" + o[k]).substr(("" + o[k]).length)));
}
}
return fmt;
};
//时区的换算 offset时区位置
function calcTime(offset) { 
// 创建一个本地日期
var d = new Date(); 
//通过Data()对象的getTimezoneOffset()方法来找出当地时间偏移值。在缺省情况下,此方法以分钟显示时区偏移值结果,因此在早先的计算中要将此值转换成毫秒。 
var utc = d.getTime() + (d.getTimezoneOffset() * 60000); 
//将本地时间与本地时区偏移值相加得到当前国际标准时间(UTC)。 
var nd = new Date(utc + (3600000*offset)); 
return nd;
};
(function(){
//刻度对象
var keduDom = document.getElementById("kedu");
//产生刻度值
var html = "";
for(var i=0;i<60;i++){
html += "<li style=‘transform:rotate("+(i * 6)+"deg)‘></li>";
};
keduDom.innerHTML = html;
//时分秒针
var secDom = $("sec");//1-60
var minDom = $("min");//1-60
var hourDom = $("hour");//1-12 每个五个格子就是一个小时:30度=1小时
var timerDom = $("timer");//北京时间
var timer2Dom = $("timer2");//
var timer3Dom = $("timer3");
function drawDate(){
var date = new Date();
//秒
var sec = date.getSeconds();
//分
var min = date.getMinutes()+sec/60;
//时
var hour = date.getHours() + min/60;
secDom.style.transform = "rotate("+(sec * 6)+"deg)";
minDom.style.transform = "rotate("+(min * 6)+"deg)";
hourDom.style.transform = "rotate("+(hour * 30)+"deg)";
//时间的设定
timerDom.innerText = "北京时间:"+date.format("HH:mm:ss");
timer2Dom.innerText = "夏威夷时间:"+calcTime("-10").format("yyyy-MM-dd HH:mm:ss");
timer3Dom.innerText = "莫斯科时间:"+calcTime("+5.5").format("yyyy-MM-dd HH:mm:ss");
};
//初始化当前时间的位置
drawDate();
//定时任务执行时钟
setInterval(drawDate,1000);
function $(id){
return document.getElementById(id);
}
})();
</script>
 </body>
</html>

-------------------

所需time.js

-------------------------------

// JavaScript Document
function Dtime(){
ctx.clearRect(0,0,500,500);
var now=new Date();
var h=now.getHours();
var m=now.getMinutes();
var s=now.getSeconds();
//自定义颜色
//创建线性渐变
var gradient=ctx.createLinearGradient(0,0,500,500);
gradient.addColorStop("0","#FFF");
gradient.addColorStop("0.5","#CCC");
gradient.addColorStop("1.0","#FFF");
//笔触面积
ctx.lineWidth=50;
//把自定义颜色赋给笔迹
ctx.strokeStyle=gradient;
//绘制表盘
ctx.beginPath();//开始下笔
//圆形
ctx.arc(250,250,210,0,360*Math.PI/180);
ctx.stroke();
ctx.closePath();//结束下笔
//绘制表盘 end
//时刻度
//换笔
ctx.lineWidth=7;
ctx.strokeStyle="#000";
for(var i=0;i<12;i++){
ctx.save();
//把坐标点(250.250)置为原点
ctx.translate(250,250);
ctx.beginPath();
//旋转角度
ctx.rotate(i*30*Math.PI/180);
//花直线
ctx.moveTo(0,-160);
ctx.lineTo(0,-185);
ctx.stroke();
ctx.closePath();
ctx.restore();
}//时刻度 end
//分刻度
ctx.lineWidth=3;
for(var i=0;i<60;i++){
ctx.save();
ctx.translate(250,250);
ctx.beginPath();
ctx.rotate(i*6*Math.PI/180);
ctx.moveTo(0,-170);
ctx.lineTo(0,-185);
ctx.stroke();
ctx.closePath();
ctx.restore();
}
//时针
ctx.save();
ctx.lineWidth=7;
ctx.translate(250,250);
ctx.rotate(h*30*Math.PI/180);
ctx.beginPath();
ctx.moveTo(0,-140);
ctx.lineTo(0,10);
ctx.stroke();
ctx.closePath();
ctx.restore();
//分针
ctx.save();
ctx.lineWidth=5;
ctx.translate(250,250);
ctx.rotate(m*6*Math.PI/180);
ctx.beginPath();
ctx.moveTo(0,-150);
ctx.lineTo(0,15);
ctx.stroke();
ctx.closePath();
ctx.restore();
//秒针
ctx.save();
ctx.lineWidth=3;
ctx.strokeStyle="red";
ctx.translate(250,250);
ctx.rotate(s*6*Math.PI/180);
ctx.beginPath();
ctx.moveTo(0,-150);
ctx.lineTo(0,15);
ctx.stroke();
ctx.closePath();
ctx.restore();
}
setInterval(Dtime,1000);
时间: 2024-10-10 16:09:53

时钟和时区的相关文章

CentOS 7 时钟和时区

在CentOS 7中引入了一个timedatectl 时间管理程序 $timedatectl Local time: Fri 2017-07-21 11:25:06 CST Universal time: Fri 2017-07-21 03:25:06 UTC RTC time: Fri 2017-07-21 03:25:06 Time zone: Asia/Shanghai (CST, +0800) NTP enabled: yes NTP synchronized: yes RTC in l

Android有感(20):时钟(AnalogClock和TextClock)和计时器(Chronometer)

时钟文本TextClock继承自TextView,是用于显示当前时间的文本框. TextClock支持的XML属性和相关方法 XML属性 相关方法 说明 android:format12Hour setFormat12Hour(CharSequence) 设置12小时制的格式字符串 android:format24Hour setFormat12Hour(CharSequence) 设置24小时制的格式字符串 android:timeZone setTimeZone(String) 设置该时钟的

linux修改系统时间和时区

1.修改系统时间linux系统时钟有两个,一个是硬件时钟,即BIOS时间,就是我们进行CMOS设置时看到的时间,另一个是系统时钟,是linux系统Kernel时间.当Linux启动时,系统Kernel会去读取硬件时钟的设置,然后系统时钟就会独立于硬件运作.有时我们会发现系统时钟和硬件时钟不一致,因此需要执行时间同步,下面就分享一下时间设置及时钟同步的命令使用方法.date命令将日期设置为2014年6月18日 ---- date -s 06/18/14将时间设置为14点20分50秒 ---- da

javaBean

编辑 JavaBean 是一种JAVA语言写成的可重用组件.为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器.JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性.众所周知,属性名称符合这种模式,其他Java 类可以通过自身机制发现和操作这些JavaBean 的属性. 目录 1基本概述 ? 基本概念   ? 组成   ? 范围   ? 任务   ? 设计目标   ? 需求 ? 界限   ? 三大构件   ? 发展 2开发环境 ? 设计环境   ? 运行

Linux命令篇之hwclock命令和man命令

hwclock:功能说明 显示与设定硬件时钟. 语法 hwclock[--adjust][--debug][--directisa][--hctosys][--show][--systohc][--test] [--utc][--version][--set--date=<日期与时间>] 补充说明 硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟.系统时钟则是指kernel中的时钟.当Linux启动时,系统时钟会去读取硬件时钟的设定,之后系统时钟即独立运作.所有Linux相

ipsec vpn配置

ipsec  vpn分为场点到场带点ipsec vpn和远程接入客户ip sec  vpn 一.场点到场点 1.配置预共享密钥 ctypto  isakmp   key   cisco    address    10.1.1.1 2. 配置ike策略 ctypto   isakmp   policy   10 hash   md5 authentication    pre-share 3.配置ipsec  变换集 crypto   ipsec   transform-set    trans

SUSE Linux Enterprise Serve 12 试用体验

大家都知道德国出产的奔驰.宝马.等车型以精美.可靠.耐用而著称,而同样出自德国人之手的Suse Linux ,即使是被收购也是一款出色的Linux发行版,目前Suse成为唯一一家为IBM大型主机提供具有企业就绪和商业支持特性的Linux操作系统的公司, 特别针对IBM System z 架构进行了优化,使其安装过程非常简便.而且在Suse平台上面部署SAP和Oracle应用非常方便.在今年10月28日,Suse Enterprise Server 12(简称SLES 12)在11版发布4年后,经

CentOS系统中与时间相关的几个命令

时间在任何系统里都是最基本的部分,必不可少.本文介绍CentOS系统中与时间的相关命令. 基本概念 硬件时钟(Hardware Clock) 硬件时钟,也叫实时时钟(RealTimeClock),或者BIOS时钟,或者CMOS时钟.它是位于机器主板上的实际硬件设备,一般靠电池维持运行.所以,即使机器关机,它也会一直保持记录当前时间,一般不是十分精确. 系统时间(System Time) 系统时间指的是操作系统中的时间.它是由系统加电后的硬件定时器驱动,Linux系统根据定时器信号来递增时间计数.

&lt;&lt;ABP框架&gt;&gt; 时间

文档目录 本节内容: 简介 时钟 客户端 时区 客户端 绑定器与转换器 简介 虽然有些应用目标市场只是在一个时区,有些应用目标市场是许多不同时区,为满足这种需求并集中化日期操作,ABP为日期操作提供公共基础. 时钟 Clock是与DateTime值合作的主要对象,它定义了以下静态属性/方法: Now:通过当前供应器获取当前时间. Kind:获取当前供应器的DateTimeKind. SupportsMultipleTimezone:获取一个值,指示当前供应器能否支持多时区应用. Normaliz