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 相关文章推荐
Ext第一周 史上最强学习笔记---GridPanel(基础篇)
Dec 29 Javascript
让复选框只能选择一项的方法
Oct 08 Javascript
两种不同的方法实现js对checkbox进行全选和反选
May 13 Javascript
JavaScript中的this关键字使用方法总结
Mar 13 Javascript
Jquery Ajax Error 调试错误的技巧
Nov 20 Javascript
jQuery实现查找最近父节点的方法
Jun 23 Javascript
使用contextMenu插件实现Bootstrap table弹出右键菜单
Feb 20 Javascript
js中toString()和String()区别详解
Mar 23 Javascript
如何使用VuePress搭建一个类型element ui文档
Feb 14 Javascript
vue实现Excel文件的上传与下载功能的两种方式
Jun 28 Javascript
vue h5移动端禁止缩放代码
Oct 28 Javascript
JS错误处理与调试操作实例分析
Apr 13 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中判断一个字符串包含另一个字符串的方法
2007/03/19 PHP
php 多文件上传的实现实例
2016/10/23 PHP
PC端微信扫码支付成功之后自动跳转php版代码
2017/07/07 PHP
漂亮的thinkphp 跳转页封装示例
2019/10/16 PHP
使用jQuery.Validate进行客户端验证(初级篇) 不使用微软验证控件的理由
2010/06/28 Javascript
js中opener与parent的区别详细解析
2014/01/14 Javascript
关闭浏览器窗口弹出提示框并且可以控制其失效
2014/04/15 Javascript
jQuery浏览器CSS3特写兼容实例
2015/01/19 Javascript
60行js代码实现俄罗斯方块
2015/03/31 Javascript
AngularJS整合Springmvc、Spring、Mybatis搭建开发环境
2016/02/25 Javascript
jquery删除table当前行的实例代码
2016/10/07 Javascript
JS中事件冒泡和事件捕获介绍
2016/12/13 Javascript
JavaScript中的toString()和toLocaleString()方法的区别
2017/02/15 Javascript
100行代码理解和分析vue2.0响应式架构
2017/03/09 Javascript
Angular实现的进度条功能示例
2018/02/18 Javascript
关于vue中的ajax请求和axios包问题
2018/04/19 Javascript
在vue中更换字体,本地存储字体非引用在线字体库的方法
2018/09/28 Javascript
vue开发环境配置跨域的方法步骤
2019/01/16 Javascript
Vue核心概念Getter的使用方法
2019/01/18 Javascript
[13:16]INFAMOUS vs VGJ T BO3
2018/06/07 DOTA
python base64 decode incorrect padding错误解决方法
2015/01/08 Python
详解Python3中yield生成器的用法
2015/08/20 Python
python爬虫获取京东手机图片的图文教程
2017/12/29 Python
详解Django 中是否使用时区的区别
2018/06/14 Python
浅析python,PyCharm,Anaconda三者之间的关系
2019/11/27 Python
python实现矩阵和array数组之间的转换
2019/11/29 Python
pytorch中图像的数据格式实例
2020/02/11 Python
Python JSON常用编解码方法代码实例
2020/09/05 Python
医疗保健专业人士购物网站:Scrubs & Beyond
2017/02/08 全球购物
新加坡网上化妆品店:Best Buy World
2018/05/18 全球购物
土木工程师岗位职责
2013/11/24 职场文书
党员四风自我剖析材料
2014/10/07 职场文书
业务员辞职信范文
2015/03/02 职场文书
务工证明怎么写
2015/06/18 职场文书
2015年文秘个人工作总结
2015/10/14 职场文书
感恩信:写给爸爸妈妈的一封感谢信
2019/09/12 职场文书