javascript-简单的日历实现及Date对象语法介绍(附图)


Posted in Javascript onMay 30, 2013

知识点:

主要是对Date对象的使用。(下面的介绍内容来自网络)

创建 Date 对象的语法:
var myDate=new Date()
Date 对象会自动把当前日期和时间保存为其初始值。
参数形式有以下5种:
new Date("month dd,yyyy hh:mm:ss");
 new Date("month dd,yyyy");
new Date(yyyy,mth,dd,hh,mm,ss);
new Date(yyyy,mth,dd);
new Date(ms);

注意:最后一种形式,参数表示的是需要创建的时间和GMT时间1970年1月1日之间相差的毫秒数。

参数的含义如下:

month:用英文表示月份名称,从January到December

mth:用整数表示月份,从(1月)到11(12月)

dd:表示一个月中的第几天,从1到31

yyyy:四位数表示的年份

hh:小时数,从0(午夜)到23(晚11点)

mm:分钟数,从0到59的整数

ss:秒数,从0到59的整数

ms:毫秒数,为大于等于0的整数

Date对象的方法:

getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31)。
getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6)。
getMonth() 从 Date 对象返回月份 (0 ~ 11)。
getFullYear() 从 Date 对象以四位数字返回年份。
getYear() 请使用 getFullYear() 方法代替。
getHours() 返回 Date 对象的小时 (0 ~ 23)。
getMinutes() 返回 Date 对象的分钟 (0 ~ 59)。
getSeconds() 返回 Date 对象的秒数 (0 ~ 59)。
getMilliseconds() 返回 Date 对象的毫秒(0 ~ 999)。
getTime() 返回 1970 年 1 月 1 日至今的毫秒数。
getTimezoneOffset() 返回本地时间与格林威治标准时间 (GMT) 的分钟差。
getUTCDate() 根据世界时从 Date 对象返回月中的一天 (1 ~ 31)。
getUTCDay() 根据世界时从 Date 对象返回周中的一天 (0 ~ 6)。
getUTCMonth() 根据世界时从 Date 对象返回月份 (0 ~ 11)。
getUTCFullYear() 根据世界时从 Date 对象返回四位数的年份。
getUTCHours() 根据世界时返回 Date 对象的小时 (0 ~ 23)。
getUTCMinutes() 根据世界时返回 Date 对象的分钟 (0 ~ 59)。
getUTCSeconds() 根据世界时返回 Date 对象的秒钟 (0 ~ 59)。
getUTCMilliseconds() 根据世界时返回 Date 对象的毫秒(0 ~ 999)。
parse() 返回1970年1月1日午夜到指定日期(字符串)的毫秒数。
setDate() 设置 Date 对象中月的某一天 (1 ~ 31)。
setMonth() 设置 Date 对象中月份 (0 ~ 11)。
setFullYear() 设置 Date 对象中的年份(四位数字)。
setYear() 请使用 setFullYear() 方法代替。
setHours() 设置 Date 对象中的小时 (0 ~ 23)。
setMinutes() 设置 Date 对象中的分钟 (0 ~ 59)。
setSeconds() 设置 Date 对象中的秒钟 (0 ~ 59)。
setMilliseconds() 设置 Date 对象中的毫秒 (0 ~ 999)。
setTime() 以毫秒设置 Date 对象。
setUTCDate() 根据世界时设置 Date 对象中月份的一天 (1 ~ 31)。
setUTCMonth() 根据世界时设置 Date 对象中的月份 (0 ~ 11)。
setUTCFullYear() 根据世界时设置 Date 对象中的年份(四位数字)。
setUTCHours() 根据世界时设置 Date 对象中的小时 (0 ~ 23)。
setUTCMinutes() 根据世界时设置 Date 对象中的分钟 (0 ~ 59)。
setUTCSeconds() 根据世界时设置 Date 对象中的秒钟 (0 ~ 59)。
setUTCMilliseconds() 根据世界时设置 Date 对象中的毫秒 (0 ~ 999)。
toSource() 返回该对象的源代码。
toString() 把 Date 对象转换为字符串。
toTimeString() 把 Date 对象的时间部分转换为字符串。
toDateString() 把 Date 对象的日期部分转换为字符串。
toGMTString() 请使用 toUTCString() 方法代替。 1 3
toUTCString() 根据世界时,把 Date 对象转换为字符串。
toLocaleString() 根据本地时间格式,把 Date 对象转换为字符串。
toLocaleTimeString() 根据本地时间格式,把 Date 对象的时间部分转换为字符串。
toLocaleDateString() 根据本地时间格式,把 Date 对象的日期部分转换为字符串。
UTC() 根据世界时返回 1997 年 1 月 1 日 到指定日期的毫秒数。
valueOf() 返回 Date 对象的原始值。
var objDate=new Date([arguments list]);

简单日历实现:

效果:
javascript-简单的日历实现及Date对象语法介绍(附图) 
代码:

<style> 
#calendar{ 
font-size: 12px; 
} 
#calendar tbody td{ 
background:#033; 
color: #fff; 
text-align: center; 
padding: 2px; 
} 
.detail{ 
text-align:center; 
} 
</style> 
测试值:<input id="calendar_value" name="" type="text" /><br /> 
<button id="cal_prev">上一月</button> 
<button id="cal_next">下一月</button> 
<button id="cal_preyear">上一年</button> 
<button id="cal_nextyear">下一年</button> 
<button id="cal_today">今天</button> 
<div id="calendar" style="position:absolute;"></div> <script> 
var Calendar=function(year,monthNum,parent){ 
this.year=year; 
this.parent=parent; 
this.monthNum=monthNum-1; 
function isLeapYear(y){ 
return (y>0)&&!(y%4)&&((y%100)||!(y%400)); 
} 
this.numDays=[31,isLeapYear(this.year)?29:28,31,30,31,30,31,31,30,31,30,31][this.monthNum]; 
this.weekDays=["日","一","二","三","四","五","六"]; 
this.nowDate=new Date; 
this.init(); 
} 
Calendar.prototype={ 
setMonthNum:function(monthNum){ 
this.monthNum=monthNum-1; 
}, 
getMonthNum:function(){ 
return this.monthNum+1; 
}, 
setYearNum:function(year){ 
this.year=year; 
}, 
getYearNum:function(){ 
return this.year; 
}, 
init:function(){ 
this.setup(this.parent); 
}, 
reflesh:function(){ 
this.setup(this.parent); 
}, 
setup:function(id){ 
var date=this.nowDate; 
var cal=document.getElementById(id); 
cal.innerHTML=""; 
var calDiv=document.createElement("div"); 
var tab=document.createElement("table"); 
cal.appendChild(calDiv); 
calDiv.innerHTML=this.getSummary(); 
cal.appendChild(tab); 
calDiv.className="detail" 
this.thead=document.createElement("thead"); 
this.tbody=document.createElement("tbody"); 
this.tfoot=document.createElement("tfoot"); 
this.tr=document.createElement("tr"); 
this.td=document.createElement("td"); 
tab.appendChild(this.thead); 
tab.appendChild(this.tbody); 
this.setThead(); 
this.create(); 
}, 
setThead:function(){ 
var day=this.weekDays; 
var tr=this.tr.cloneNode(true); 
this.thead.appendChild(tr); 
for(var i=0;i<7;i++){ 
var td=this.td.cloneNode(true); 
tr.appendChild(td); 
td.innerHTML=day[i]; 
} 
}, 
create:function(){ 
var day=new Date(this.year,this.monthNum,1); 
var tr=this.tr.cloneNode(true); 
var dayCount=this.numDays; 
var that=this; 
that.tbody.appendChild(tr); 
for(var j=0;j<day.getDay();j++){ 
var td=that.td.cloneNode(true); 
tr.appendChild(td); 
td.innerHTML=" "; 
} 
for(var i=1;i<=dayCount;i++){ 
if((j+i)%7-1==0){ 
tr=that.tr.cloneNode(true); 
that.tbody.appendChild(tr); 
} 
var td=that.td.cloneNode(true); 
var s=i; 
if(i==that.nowDate.getDate()){ 
s="<font color='red'>"+i+"</font>"; 
} 
td.innerHTML=s; 
td.style.cursor="pointer"; 
td.onclick=function(){ 
document.getElementById("calendar_value").value=(that.getYearNum()+"/"+that.getMonthNum()+"/"+this.innerHTML) 
} 
td.onmouseover=function(){ 
this.style.background="#fff"; 
this.style.color="#033" 
} 
td.onmouseout=function(){ 
this.style.background=""; 
this.style.color="#fff" 
} 
tr.appendChild(td); 
} 
}, 
getSummary:function(){ 
var date=this.nowDate; 
return this.year+"年"+(this.monthNum+1)+"月"+date.getDate()+"日"; 
} 
} 
var cal=new Calendar(2013,5,"calendar"); 
cal.init(); 
document.getElementById("cal_prev").onclick=function(){ 
cal.monthNum--; 
if(cal.getMonthNum()<1){ 
cal.setMonthNum(12); 
cal.year--; 
} 
cal.reflesh(); 
} 
document.getElementById("cal_next").onclick=function(){ 
cal.monthNum++ 
if(cal.getMonthNum()>12){ 
cal.setMonthNum(1); 
cal.year++; 
} 
cal.reflesh(); 
} 
document.getElementById("cal_today").onclick=function(){ 
cal.setYearNum((new Date).getFullYear()); 
cal.setMonthNum((new Date).getMonth()+1) 
cal.reflesh(); 
} 
document.getElementById("cal_preyear").onclick=function(){ 
cal.setYearNum(cal.getYearNum()-1); 
cal.reflesh(); 
} 
document.getElementById("cal_nextyear").onclick=function(){ 
cal.setYearNum(cal.getYearNum()+1); 
cal.reflesh(); 
} 
</script>

总结:
以上代码未加注释,写得有点急。以后再整理一下,许多功能未实现。
Javascript 相关文章推荐
javascript 鼠标滚轮事件
Apr 09 Javascript
Colortip基于jquery的信息提示框插件在IE6下面的显示问题修正方法
Dec 06 Javascript
jQuery中使用了document和window哪些属性和方法小结
Sep 13 Javascript
jQuery往textarea中光标所在位置插入文本的方法
Jun 26 Javascript
javascript特殊日历控件分享
Mar 07 Javascript
十大热门的JavaScript框架和库
Mar 21 Javascript
利用js实现前后台传送Json的示例代码
Mar 29 Javascript
微信小程序全局变量改变监听的实现方法
Jul 15 Javascript
layui自定义ajax左侧三级菜单
Jul 26 Javascript
JavaScript ES6 Class类实现原理详解
May 08 Javascript
Node.js API详解之 assert模块用法实例分析
May 26 Javascript
vue 使用lodash实现对象数组深拷贝操作
Sep 10 Javascript
javascript-简单的计算器实现步骤分解(附图)
May 30 #Javascript
js控制的遮罩层实例介绍
May 29 #Javascript
js控制web打印(局部打印)方法整理
May 29 #Javascript
js动态为代码着色显示行号
May 29 #Javascript
js判断背景图片是否加载成功使用img的width实现
May 29 #Javascript
jQuery JSON实现无刷新三级联动实例探讨
May 28 #Javascript
jQuery实现随意改变div任意属性的名称和值(部分原生js实现)
May 28 #Javascript
You might like
php中的三元运算符使用说明
2011/07/03 PHP
PHP制作3D扇形统计图以及对图片进行缩放操作实例
2014/10/23 PHP
PHP处理Oracle的CLOB实例
2014/11/03 PHP
PHP数组相关函数汇总
2015/03/24 PHP
PHP统计数值数组中出现频率最多的10个数字的方法
2015/04/20 PHP
thinkPHP中create方法与令牌验证实例浅析
2015/12/08 PHP
CI分页类首页、尾页不显示的解决方法
2016/03/28 PHP
使用Entrust扩展包在laravel 中实现RBAC的功能
2020/03/16 PHP
jQuery 中使用JSON的实现代码
2011/12/01 Javascript
复制js对象方法(详解)
2013/07/08 Javascript
JavaScript学习笔记整理之引用类型
2016/01/22 Javascript
AngularJS  $modal弹出框实例代码
2016/08/24 Javascript
jQuery绑定事件的四种方式介绍
2016/10/31 Javascript
详解nodejs 文本操作模块-fs模块(二)
2016/12/22 NodeJs
详解打造 Vue.js 可复用组件
2017/03/24 Javascript
Django与Vue语法的冲突问题完美解决方法
2017/12/14 Javascript
Vue不能检测到Object/Array更新的情况的解决
2018/06/26 Javascript
vue中多路由表头吸顶实现的几种布局方式
2019/04/12 Javascript
jquery实现简单自动轮播图效果
2020/07/29 jQuery
[10:14]2018DOTA2国际邀请赛寻真——paiN Gaming不仅为自己而战
2018/08/14 DOTA
Python set集合类型操作总结
2014/11/07 Python
Python使用PDFMiner解析PDF代码实例
2017/03/27 Python
python中is与双等于号“==”的区别示例详解
2017/11/21 Python
Python实现的堆排序算法示例
2018/04/29 Python
python项目对接钉钉SDK的实现
2019/07/15 Python
python3.5的包存放的具体路径
2020/08/16 Python
python实现在列表中查找某个元素的下标示例
2020/11/16 Python
python中把元组转换为namedtuple方法
2020/12/09 Python
空气环保标语
2014/06/12 职场文书
青年志愿者活动方案
2014/08/17 职场文书
四风问题对照检查材料思想汇报
2014/10/07 职场文书
2014年师德师风工作总结
2014/11/25 职场文书
MySQL 使用SQL语句修改表名的实现
2021/04/07 MySQL
java Nio使用NioSocket客户端与服务端交互实现方式
2021/06/15 Java/Android
CSS基础详解
2021/10/16 HTML / CSS
JavaScript正则表达式实现注册信息校验功能
2022/05/30 Java/Android