Javascript之Date对象详解
Date对象即日期时间对象,它的主要功能是实现对日期时间的处理
1、创建Date对象
varmyDate=newDate();
或
varmyDate=newDate("July21,198301:15:00");//此种方法为自定义日期时间的方式,格式若不对的话为提示InvalidDate Date对象的constructor属性为:Date document.write(myDate.constructor==Date);//输出true
2、Date()方法,返回今天的日期和时间,格式是固定格式:
document.write(Date());//Date()属于Javascript的内置对象,可以直接使用
输出:
FriOct26201210:15:22GMT+0800
格式:星期月份日期年份时间时区
另:假如自定义一个Date()对象,返回结果是一样的
varmyDate=newDate(); document.write(myDate);
FriOct26201210:17:09GMT+0800
注:两者区别的地方在于:
前者只能显示当前的时间,而不能随意定义时间
例,document.write(Date("July21,198301:15:00"));
它显示的时间仍然是当前的时间:FriOct26201210:15:22GMT+0800
3、getDate()方法返回月份的某一天
月份中的某一天指的是使用本地时间,其返回值是1~31之间的一个整数。
varmyDate=newDate(); document.write(myDate.getDate());
输出:26
varmyDate=newDate("July21,198301:15:00"); document.write(myDate.getDate());
输出:21
4、getDay()方法可返回表示星期的某一天的数字,它的取值范围:0--6
varmyDate=newDate("July21,198301:15:00"); document.write(mtDate.getDay());
输出4
为此我们可以采用Date对象和Array对象结合的方式将时间人性化显示出来,下面这种方法非常常用
varweekday=newArray(7); weekday[0]="Sunday"; weekday[1]="Monday"; weekday[2]="Tuesday"; weekday[3]="Wednesday"; weekday[4]="Thursday"; weekday[5]="Friday"; weekday[6]="Saturday"; varmyDate=newDate(); document.write(weekday[myDate.getDay()]);
5、getMonth(),返回月份字段,返回值是0(一月)到11(十二月)之间的一个整数
和getDay()类似,我们也采用与Array对象相结合的方式
vard=newDate(); varmonth=newArray(12); month[0]="January"; month[1]="February"; month[2]="March"; month[3]="April"; month[4]="May"; month[5]="June"; month[6]="July"; month[7]="August"; month[8]="September"; month[9]="October"; month[10]="November"; month[11]="December"; document.write("Themonthis"+month[d.getMonth()]);
6、getFullYear()方法可返回一个表示年份的4位数字。
返回值是一个四位数,表示包括世纪值在内的完整年份,而不是两位数的缩写形式。
vard=newDate(); document.write(d.getFullYear());
输出:
2012
varborn=newDate("July21,198301:15:00"); document.write("Iwasbornin"+born.getFullYear());
输出:
1983
通过上述方法三种方法结合我们就可以得出比较人性化的时间显示,例:
varweekday=newArray(7); weekday[0]="Sunday" weekday[1]="Monday" weekday[2]="Tuesday" weekday[3]="Wednesday" weekday[4]="Thursday" weekday[5]="Friday" weekday[6]="Saturday" varmonth=newArray(12); month[0]="January"; month[1]="February"; month[2]="March"; month[3]="April"; month[4]="May"; month[5]="June"; month[6]="July"; month[7]="August"; month[8]="September"; month[9]="October"; month[10]="November"; month[11]="December"; varmyDate=newDate(); document.write("Dateis"+myDate.getFullYear()+""+month[myDate.getMonth()]+""+myDate.getDate()+""+weekday[myDate.getDay()]);
输出为:
Dateis2012October19Friday
7、getHours()方法可返回时间的小时字段,返回值是0(午夜)到23(晚上11点)之间的一个整数。
varborn=newDate("July21,198301:15:00"); document.write(born.getHours());
输出:1
注释:由getHours()返回的值是一个两位的数字。
不过返回值不总是两位的,如果该值小于10,则仅返回一位数字。
8、getMinutes()方法可返回时间的分钟字段,返回值是0~59之间的一个整数。
与上述方法类似,返回值不总是两位的,如果该值小于10,则仅返回一位数字。
9、getSeconds()方法可返回时间的秒,返回值是0~59之间的一个整数。
与上述方法类似,返回值不总是两位的,如果该值小于10,则仅返回一位数字。
10、getMilliseconds()方法可返回时间的毫秒,毫秒字段,以本地时间显示。返回值是0~999之间的一个整数。
注释:由getMilliseconds()返回的值是一个三位的数字。
不过返回值不总是三位的,如果该值小于100,则仅返回两位数字,如果该值小于10,则仅返回一位数字。
下面我们有两种方式将时间显示出来:
--->方式一
vard=newDate(); document.write('Timeis'+d.getHours()+":"+d.getMinutes()+":"+d.getSeconds());
输出:Timeis10:52:2,缺点很明显,在秒为<10的情况下只显示了一位,其他的也类似,因此推荐第二种显示方式
--->方式二
functionchecktime(time) { if(time<10) { time='0'+time; } returntime; } vard=newDate(); document.write('Timeis'+checktime(d.getHours())+":"+checktime(d.getMinutes())+":"+checktime(d.getSeconds()));
输出:Timeis10:55:02
11、getTime()方法可返回本地时间距1970年1月1日之间的毫秒数,因此可以自定义Date("Jul262000");
vard=newDate(); document.write(d.getTime()+"millisecondssince1970/01/01");
输出:1350615452813millisecondssince1970/01/01
因此我们可以根据此数得到本地时间距离1970/01/01的年数
varminutes=1000*60;//一分钟有60秒,一秒有60毫秒,下面依次类推 varhours=minutes*60; vardays=hours*24; varyears=days*365; vard=newDate(); vart=d.getTime();//获得距离1970/01/01的毫秒数 vary=t/years; document.write("It'sbeen:"+y+"yearssince1970/01/01!");
输出:
It'sbeen:42.82773990521943yearssince1970/01/01!
注:此时的年份是一个小数,可以将其换成整数(其实Javascript中没有整数的区别)
最后一行修改为:
document.write("It'sbeen:"+parseInt(y)+"yearssince1970/01/01!");
输出:
It'sbeen:42yearssince1970/01/01!
parseInt(float);可以将浮点类型转换为整型
12、getTimezoneOffset()方法可返回格林威治时间和本地时间之间的时差,以分钟为单位。
注:
getTimezoneOffset()方法返回的是本地时间与GMT时间或UTC时间之间相差的分钟数。
实际上,该函数告诉我们运行JavaScript代码的时区,以及指定的时间是否是夏令时。
返回之所以以分钟计,而不是以小时计,原因是某些国家所占有的时区甚至不到一个小时的间隔。
vard=newDate(); document.write(d.getTimezoneOffset());
输出:
-480(东八区,8*60)
因此可以根据此方法来判断所在时区
functioncheckzone(zone) { if(zone==0) { return"零时区"; } elseif(zone>0) { return"西"+parseInt(zone/60)+"区"; } else { return"东"+parseInt(Math.abs(zone/60))+"区"; } } vard=newDate(); document.write(checkzone(d.getTimezoneOffset()));
其中Math.abs()为求绝对值
以上方法是自己原创,因为地理学的不好,不知道对不对,求指正
13、parse()方法可解析一个日期时间字符串,并返回1970/1/1午夜距离该日期时间的毫秒数。
parse(str);str为字符串,是一个符合时间格式的字符串
varminutes=1000*60; varhours=minutes*60; vardays=hours*24; varyears=days*365; vart=Date.parse("Jul8,2005"); vary=t/years; document.write("It'sbeen:"+parseInt(y)+"yearsfrom1970/01/01"); document.write("to2005/07/08!");
输出为:
It'sbeen:35yearsfrom1970/01/01to2005/07/08!
14、setDate()方法用于设置一个月的某一天。
setDate(day),day必需。表示一个月中的一天的一个数值(1~31)。
注,此方法是在原先对象的基础上进行修改,会改变原先数据的值
例:
vard=newDate(); document.write(d.getDate()+"<br>"); d.setDate(31); document.write(d.getDate());
输出:
19
31
15、setMonth()方法用于设置月份,与setDate()使用方法一直,也会改变原Date对象
setMonth(month,day),目前可能不支持第二个参数,month必需。一个表示月份的数值,该值介于0(一月)~11(十二月)之间。
假如支持day参数的话,day代表的是月中某一天的数值,介于1~31之间。用本地时间表示。
vard=newDate(); document.write(d.getMonth()+""+d.getDate()+"<br>"); d.setMonth(11,26); document.write(d.getMonth()+""+d.getDate());
输出为:
919
1126
16、setFullYear()方法用于设置年份。
setFullYear(year,month,day);
year必需。表示年份的四位整数。用本地时间表示。
month可选。表示月份的数值,介于0~11之间。用本地时间表示。
day可选。表示月中某一天的数值,介于1~31之间。用本地时间表示。
vard=newDate(); d.setFullYear(1992,10,3); document.write(d);
输出为:
TueNov03199211:31:58GMT+0800
17、setHours()方法用于设置指定的时间的小时字段。
setHours(hour,min,sec,millisec);
hour必需。表示小时的数值,介于0(午夜)~23(晚上11点)之间,以本地时间计(下同)。
min可选。表示分钟的数值,介于0~59之间。在EMCAScript标准化之前,不支持该参数。
sec可选。表示秒的数值,介于0~59之间。在EMCAScript标准化之前,不支持该参数。
millisec可选。表示毫秒的数值,介于0~999之间。在EMCAScript标准化之前,不支持该参数。
vard=newDate() d.setHours(15,35,1) document.write(d)
输出为:
FriOct1915:35:01UTC+08002012
18、setMinutes()方法用于设置指定时间的分钟字段。
setMinutes(min,sec,millisec)
min必需。表示分钟的数值,介于0~59之间,以本地时间计(下同)。
sec可选。表示秒的数值,介于0~59之间。在EMCAScript标准化之前,不支持该参数。
millisec可选。表示毫秒的数值,介于0~999之间。在EMCAScript标准化之前,不支持该参数。
vard=newDate() d.setMinutes(1) document.write(d)
输出为:
FriOct1911:01:11UTC+08002012
19、setSeconds()方法用于设置指定时间的秒字段。
setSeconds(sec,millisec)
sec必需。表示秒的数值,该值是介于0~59之间的整数。
millisec可选。表示毫秒的数值,介于0~999之间。在EMCAScript标准化之前,不支持该参数。
20、setMilliseconds()方法用于设置指定时间的毫秒字段。
setMilliseconds(millisec)
millisec必需。用于设置dateObject毫秒字段,该参数是介于0~999之间的整数。
21、setTime()方法以毫秒设置Date对象。
此方法是比较常用的方法,在数据库中存放Date.getTime()毫秒数,
在返回时如何显示出来呢,就是用此方法
setTime(millisec)
millisec必需。要设置的日期和时间据GMT时间1997年1月1日午夜之间的毫秒数。
这种类型的毫秒值可以传递给Date()构造函数,可以通过调用Date.UTC()和Date.parse()方法获得该值。以毫秒形式表示日期可以使它独立于时区。
vard=newDate(); d.setTime(77771564221); document.write(d);
输出为:
MonJun19197211:12:44GMT+0800
此种方法就可以根据数据库中存放的long数据类型将其转换为了时间对象
22、toTimeString()方法可把Date对象的时间部分转换为字符串,并返回结果。
vard=newDate(); document.write(d.toTimeString());
输出:
11:50:57GMT+0800
23、toDateString()方法可把Date对象的日期部分转换为字符串,并返回结果。
vard=newDate(); document.write(d.toDateString());
输出:
FriOct192012
24、还有很多设计UTC时区的一些方法,此处没有列出,仅仅是对一般的通用较多的方法汇总了下
查看更多JavaScript的语法,大家可以关注:《JavaScript参考教程》、《JavaScript代码风格指南》,也希望大家多多支持毛票票。