JavaScript对象-Date对象
我们将用一个例子一步步的学习和研究Date对象。该例子是在浏览器中显示一个数字时钟,包括年月日及星期。
效果:2008年1月3日 11:07:41 星期四。
在使用Date对象之前必须先创建该对象。在JavaScript中有3种方法创建Date对象。
我们先看第一种无参数创建,如果需要对当前的日期或时间进行操作,可以使用这种方法来创建Date对象。 objdate=new Date()
具体用法在介绍完几个基本的Date方法(方法我认为可以简单理解为,这个对象的本领,就象我们一个人都能做什么一样)后见示例。
一、getYear方法和getFullYear方法——获取Date对象中的年份
基本语法:objdate.getYear() objdate.getFullYear()
功能说明:返 回Date对象中所存储的年份。前者和后者的区别是后者可避免千年问题。对于1900以前及2000年以后的年份,两种方法作用相同。但对于1900至 1999年之间的年份,前者返回的年份是后两位数。以上针对IE浏览器,而对FF浏览器,则不是这样,具体区别请看下例。
实例演示:<html>
<head>
<title>JavaScript对象——Date对象</title>
<script language="javaScript">
function display(){
var date1995=new Date(1995,11,12); //定义年份为1995年,月份为12月,日期为12日的date对象
var dateToday=new Date(); //定义当前日期和时间的date对象
var fullYear1995=date1995.getFullYear();//以getFullYear方法获取1995年年份
var year1995=date1995.getYear();//以getYear方法获取1995年年份
var fullYearToday=dateToday.getFullYear();
var yearToday=dateToday.getYear();
document.getElementById("clock1").innerHTML="1995年的getFullYear()返回值为:"+fullYear1995;//向ID号为CLOCK1的层中写入信息
document.getElementById("clock2").innerHTML="1995年的getYear()返回值为:"+year1995;
document.getElementById("clock3").innerHTML="今年的getFullYear()返回值为:"+fullYearToday;
document.getElementById("clock4").innerHTML="今年的getYear()返回值为:"+yearToday;
}
</script>
</head>
<body onload="display()">
<div id="clock1"></div>
<div id="clock2"></div>
<div id="clock3"></div>
<div id="clock4"></div>
</body>
</html>在IE中显示效果:
1995年的getFullYear()返回值为:1995
1995年的getYear()返回值为:95
今年的getFullYear()返回值为:2008
今年的getYear()返回值为:2008在FF中显示的效果:
1995年的getFullYear()返回值为:1995
1995年的getYear()返回值为:95
今年的getFullYear()返回值为:2008
今年的getYear()返回值为:108心得体会:
为了解决两个浏览器的兼容问题及避免千年问题,建议使用getFullYear方法。
二、getMonth方法——获得Date对象中的月份
基本语法:objdate.getMonth()
功能说明:返回值为0-11之间的某一整数,分别代表1月-12月
三、getDate方法——获得Date对象中的日期
基本语法:objdate.getDate()
功能说明:返回一个1-31之间的整数,对应某一月中的某一天
四、getDay方法——获得Date对象中的日期对应的星期数
基本语法:objdate.getDay()
功能说明:返回值为0-6之间的某一整数,分别和一周中的7天对应,0表示星期天,6表示星期六。
五、getHours方法、getMinutes方法、getSeconds方法、getMilliseconds方法——获得Date对象中的小时(24小时制)、分钟、秒、毫秒数
下面我们用上面的方法来编制一个数字时钟:
<html>
<head>
<title>数字时钟</title>
<script language="javaScript">
function display(){
var today=new Date();//以当前时间和日期来创建DATE对象
var year=today.getFullYear();//获取当前年份
var month=today.getMonth();//获取当前月份
var day=today.getDate();//获取当前日期
var week=today.getDay();//获取当前日期对应的星期
var hours=today.getHours();//获取当前小时
var minutes=today.getMinutes();//获取当前分钟
var seconds=today.getSeconds();//获取当前秒钟
month+=month+1;//由于getMonth返回值0-11对应的1-12月,所以最终结果结果要加1
switch(week)//由于getDay返回值0-6对应的是星期日到星期六,返回值为整数,要转化成中文形式
{
case 0:week="日";break;
case 1:week="一";break;
case 2:week="二";break;
case 3:week="三";break;
case 4:week="四";break;
case 5:week="五";break;
case 6:week="六";break;
}
if(minutes<=9)//当分钟数为个位时,让显示成0×形式,如为8,则显示为08,下面的秒、小时同。
{
minutes="0"+minutes
}
if(seconds<=9){
seconds="0"+seconds
}
if(hours<=9){
hours= "0"+hours
}
var listdate= "当前时间:"+year+"年"+month+"月"+day+"日 "+hours+":"+minutes+":"+seconds+" 星期"+week;//定义显示方式
document.getElementById( "clock").innerHTML=listdate;
setTimeout( "display()",1000);//每一秒重新运行一下DISPLAY()
}
</script></head>
<body onload="display()">
<div id="clock"></div>
</body>
</html>
上面的例子全面运用了前面列出的DATE对象的方法,希望通过此例,大家能对DATE中的方法有个全面认识。接下来继续学习DATE的其它方法,然后我们继续修改上面的程序,让其简单化。
六、toDateString方法和toLocaleDateString方法--将Date对象中的日期转换成字符串格式
toDateString方法能将Date对象中存储的时间转化为日期字符串输出,该字符串的一般格式为“周次 月份 日期 年份”,其中周次和月份为英文缩写。
toLocaleDateString方法只将Date对象中存储的日期转换为字符串,显示方法按您的计算机设置的时间格式显示。两者的输出不同见下例:
<script language="javascript">
var newdate=new Date();
var todatestring=newdate.toDateString();
var tolocaledatestring=newdate.toLocaleDateString();
document.write ("toDateString返回效果为:"+todatestring+"<br>")
document.write ("toLocaleDateString返回效果为:"+tolocaledatestring+"<br>")
</script>
IE中:
toDateString返回效果为:Wed Jan 9 2008
toLocaleDateString返回效果为:2008年1月9日
FF中:
toDateString返回效果为:Wed Jan 09 2008
toLocaleDateString返回效果为:2008年1月9日
七、toTimeString方法和toLocaleTimeString方法--以字符串的格式返回Date对象中所存储的时间,其中后者显示的方式受您的计算机设置的影响。
两者显示的不同见下:
IE中:
toTimeString返回效果为:09:02:22 UTC+0800
toTimeString返回效果为:9:02:22
FF中:
toTimeString返回效果为:09:02:20 GMT+0800
toTimeString返回效果为:9:02:20
现在我们来用上面这两个方法简化数字时钟代码:
<html>
<head>
<title>数字时钟</title>
<script language="javaScript">
function display(){
var today=new Date();//以当前时间和日期来创建DATE对象
var date=today.toLocaleDateString();//按本地计算机设置获取当前系统日期
var time=today.toLocaleTimeString();//按本地计算机设置获取当前系统时间
var week=today.getDay();//获取当前日期对应的星期
switch(week)//由于getDay返回值0-6对应的是星期日到星期六,返回值为整数,要转化成中文形式
{
case 0:week="日";break;
case 1:week="一";break;
case 2:week="二";break;
case 3:week="三";break;
case 4:week="四";break;
case 5:week="五";break;
case 6:week="六";break;
}
var listdate="当前时间:"+date+" "+time+" 星期"+week;//定义显示方式
document.getElementById("clock").innerHTML=listdate;
setTimeout("display()",1000);//每一秒重新运行一下DISPLAY()
}
</script></head>
<body onload="display()">
<div id="clock"></div>
</body>
</html>
哈哈,看看,代码简化了不少吧,我们再学习一个Date对象的方法,还可以简化该代码。
八、toString方法和toLocaleString方法--返回Date对象中的日期时间字符串
两者的不同不用说了,看显示效果就行了:
IE中:
toString返回效果为:Wed Jan 9 09:18:16 UTC+0800 2008
toLocaleString返回效果为:2008年1月9日 9:18:16
FF中:
toString返回效果为:Wed Jan 09 2008 09:18:12 GMT+0800
toLocaleString返回效果为:2008年1月9日 9:18:12
好了,知道这两种方法,数字时钟代码又可以简化了:
<script language="javaScript">
function display(){
var today=new Date();//以当前时间和日期来创建DATE对象
var time=today.toLocaleString();//按本地计算机设置获取当前系统日期及时间
var week=today.getDay();//获取当前日期对应的星期
switch(week)//由于getDay返回值0-6对应的是星期日到星期六,返回值为整数,要转化成中文形式
{
case 0:week="日";break;
case 1:week="一";break;
case 2:week="二";break;
case 3:week="三";break;
case 4:week="四";break;
case 5:week="五";break;
case 6:week="六";break;
}
var listdate="当前时间:"+time+" 星期"+week;//定义显示方式
document.getElementById("clock").innerHTML=listdate;
setTimeout("display()",1000);//每一秒重新运行一下DISPLAY()
}
</script>
大家还记得getDay()方法返回的星期数和中国的习惯不同吧,所以我们需要转换成和中国习惯相同的格式,在上面的例子中的switch语句的作用就起到了这个功能。我们下面学习一个Date对象的属性,用这个属性来实现相同的转换效果。
九、prototype属性--将新定义的属性或方法添加到Date对象中(这是每个javaScript对象都有的属性)
基本语法:Date.prototype.methodName=functionName
参数说明:methodName:必选项,新增方法的名称;functionName:必选项,要添加到对象中的函数名称。
实例演示:
添加一个新方法到Date对象中,该方法的作用是将0-6几个数字转换成对应符合中国习惯的周次。
首先我们要定义一个函数,该函数的功能就是将0-6几个数字转换成对应符合中国习惯的周次,也就是0对应星期日,1-6对应星一至六,然后将该方法添加到Date对象中,然后通过Date对象的实例调用这个新方法。
<script language="javascript">
function chineseWeek(numWeek)//将0-6几个数字转换成对应符合中国习惯的周次,也就是0对应星期日,1-6对应星一至六
{
switch(numWeek){
case 0:return "星期日";break;
case 1:return "星期一";break;
case 2:return "星期二";break;
case 3:return "星期三";break;
case 4:return "星期四";break;
case 5:return "星期五";break;
case 6:return "星期六";break;
}
}
Date.prototype.getChineseWeek=chineseWeek;//getChineseWeek为新定义的方法名称,在下面我们将调用这个新方法;chineseWeek为上面的函数名称。
var newdate=new Date();//按当前时间创建Date对象;
var numWeek=newdate.getDay();//返回当前日期对应的星期数;
var week=newdate.getChineseWeek(numWeek);//调用刚才新定义的getChineseWeek方法
document.write ("今天是:"+week)//输出
</script>
输出结果:
今天是:星期三
上面了解一部分Date对象的方法及属性,在继续下面的知识前,我们用数组进一步简化一下数字时钟的代码。我们将定义一个数组 weekName,数组存贮7个中文字符,即日、一、二……六,此时weekName[0]的值为“日”……weekName[6]的值为“六”,而用 getDay()对应的0……6便可作为数组的索引,便可获得符合中文的星期表示方法,详细见下例。
<html>
<head>
<title>数字时钟</title>
<script language="javaScript">
function display(){
var weekName= new Array("日","一","二","三","四","五","六")//将中文星期表示方法保存在数组weekName中
var today=new Date();//以当前时间和日期来创建DATE对象
var time=today.toLocaleString();//按本地计算机设置获取当前系统日期及时间
var week=weekName[today.getDay()];//获取当前日期对应的中文星期;
var listdate="当前时间:"+time+" 星期"+week;//定义显示方式
document.getElementById("clock").innerHTML=listdate;
setTimeout("display()",1000);//每一秒重新运行一下DISPLAY()
}
</script>
</head>
<body onload="display()">
<div id="clock"></div>
</body>
</html>
代码又简化了好多,哈哈!
最后先暂时给出全部Date对象的方法及属性列表,以后还将继续更新本文给出几个实用例子来运用它们。
Date 对象的方法
方法 | 描述 |
---|---|
Date() | 返回当日的日期和时间 |
getDate() | 从 Date 对象返回一个月中的某一天 (1 ~ 31) |
getDay() | 从 Date 对象返回一周中的某一天 (0 ~ 6) |
getMonth() | 从 Date 对象返回月份 (0 ~ 11) |
getFullYear() | 从 Date 对象以四位数字返回年份 |
getYear() | 从 Date 对象以两位或四位数字返回年份。 |
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() | 设置 Date 对象中的年份(两位或四位数字)。 |
setHours() | 设置 Date 对象中的小时 (0 ~ 23) |
setMinutes() | 设置 Date 对象中的分钟 (0 ~ 59) |
setSeconds() | 设置 Date 对象中的秒钟 (0 ~ 59) |
setMilliseconds() | 设置 Date 对象中的毫秒 (0 ~ 999) |
setTime() | 通过向或从1970年1月1日午夜添加或减去指定数目的毫秒来计算日期和时间 |
setUTCDate() | 根据世界时设置 Date 对象中月份的一天 (1 ~ 31) |
setUTCMonth() | 根据世界时设置 Date 对象中的月份 (0 ~ 11) |
setUTCFullYear() | 根据世界时设置 Date 对象中年份(四位数字) |
setUTCHours() | 根据世界时设置 Date 对象中小时 (0 ~ 23) |
setUTCMinutes() | 根据世界时设置 Date 对象中分钟 (0 ~ 59) |
setUTCSeconds() | 根据世界时设置 Date 对象中秒钟 (0 ~ 59) |
setUTCMilliseconds() | 根据世界时设置 Date 对象中毫秒S(0 ~ 999) |
toSource() | 代表对象的源代码 |
toString() | 把 Date 对象转换为字符串。 |
toTimeString() | 把 Date 对象的时间部分转换为字符串。 |
toDateString() | 把 Date 对象的日期部分转换为字符串。 |
toGMTString() | 根据格林威治时间,把 Date 对象转换为字符串。 |
toUTCString() | 根据世界时,把 Date 对象转换为字符串。 |
toLocaleString() | 根据本地时间格式,把 Date 对象转换为字符串。 |
toLocaleTimeString() | 根据本地时间格式,把 Date 对象的时间部分转换为字符串 |
toLocaleDateString() | 根据本地时间格式,把 Date 对象的日期部分转换为字符串 |
UTC() | 根据世界时,获得一个日期,然后返回1970年1月1日午夜到该日期的毫秒数。 |
valueOf() | 返回 Date 对象的原始值。 |
Date 对象的属性
属性 | 描述 |
---|---|
constructor | 一个对创建对象的函数的引用 |
prototype | 使您有能力向对象添加属性和方法 |