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 相关文章推荐
IE9+已经不对document.createElement向下兼容的解决方法
Sep 14 Javascript
原生javascript实现匀速运动动画效果
Feb 26 Javascript
jQuery的图片轮播插件PgwSlideshow使用详解
Aug 11 Javascript
原生js实现图片放大缩小计时器效果
Jan 20 Javascript
使用openSpeDiv方法实现Ecshop登录弹窗框效果
Mar 13 Javascript
Vue数据监听方法watch的使用
Mar 28 Javascript
利用js实现前后台传送Json的示例代码
Mar 29 Javascript
vue中导出Excel表格的实现代码
Oct 18 Javascript
基于jQuery实现可编辑的表格
Dec 11 jQuery
Node.JS获取GET,POST数据之queryString模块使用方法详解
Feb 06 Javascript
JavaScript实现随机点名器
Mar 25 Javascript
简单了解three.js 着色器材质
Aug 03 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中利用XML技术构造远程服务(下)
2006/10/09 PHP
深入浅出php socket编程
2015/05/13 PHP
php中关于长度计算容易混淆的问题分析
2016/05/27 PHP
Yii2使用自带的UploadedFile实现的文件上传
2016/06/20 PHP
PHP中类的自动加载的方法
2017/03/17 PHP
PHP使用 Imagick 扩展实现图片合成,圆角处理功能示例
2019/09/09 PHP
JavaScript 组件之旅(二)编码实现和算法
2009/10/28 Javascript
提升你网站水平的jQuery插件集合推荐
2011/04/19 Javascript
解析URI与URL之间的区别与联系
2013/11/22 Javascript
JavaScript 随机验证码的生成实例代码
2016/09/22 Javascript
JS识别浏览器类型(电脑浏览器和手机浏览器)
2016/11/18 Javascript
vue2.0开发实践总结之入门篇
2016/12/06 Javascript
node.js发送邮件email的方法详解
2017/01/06 Javascript
jquery动态添加带有样式的HTML标签元素方法
2018/02/24 jQuery
微信小程序js文件改变参数并在视图上及时更新【推荐】
2018/06/11 Javascript
NodeJS加密解密及node-rsa加密解密用法详解
2018/10/12 NodeJs
JS添加或删除HTML dom元素的方法实例分析
2019/03/05 Javascript
vue实现Excel文件的上传与下载功能的两种方式
2019/06/28 Javascript
微信小程序自定义头部导航栏(组件化)
2019/11/15 Javascript
Python计算字符宽度的方法
2016/06/14 Python
Python给你的头像加上圣诞帽
2018/01/04 Python
python读取目录下最新的文件夹方法
2018/12/24 Python
Python语言检测模块langid和langdetect的使用实例
2019/02/19 Python
新手入门Python编程的8个实用建议
2019/07/12 Python
Django的Modelforms用法简介
2019/07/27 Python
利用Python实现斐波那契数列的方法实例
2020/07/26 Python
Python Merge函数原理及用法解析
2020/09/16 Python
瑞士国际航空官网:SWISS
2016/07/21 全球购物
泰国办公用品购物网站:OfficeMate
2018/02/04 全球购物
法学专业求职信
2014/07/15 职场文书
纪念一二九运动演讲稿
2014/09/16 职场文书
2015年主婚人婚礼致辞
2015/07/28 职场文书
保险公司增员口号
2015/12/25 职场文书
互联网创业商业模式以及赚钱法则有哪些?
2019/10/12 职场文书
MySQL中varchar和char类型的区别
2021/11/17 MySQL
Mac电脑OS系统下安装Nginx的详细教程
2022/04/14 Servers