Javascript之Date对象详解
date对象即日期时间对象,它的主要功能是实现对日期时间的处理
1、创建date对象
或
date对象的constructor属性为:date
document.write(mydate.constructor == date);//输出true
2、date()方法,返回今天的日期和时间,格式是固定格式:
输出:
fri oct 26 2012 10:15:22 gmt+0800
格式: 星期 月份 日期 年份 时间 时区
另:假如自定义一个date()对象,返回结果是一样的
document.write(mydate);
fri oct 26 2012 10:17:09 gmt+0800
注:两者区别的地方在于:
前者只能显示当前的时间,而不能随意定义时间
例,document.write(date("july 21, 1983 01:15:00"));
它显示的时间仍然是当前的时间:fri oct 26 2012 10:15:22 gmt+0800
3、getdate()方法返回月份的某一天
月份中的某一天指的是使用本地时间,其返回值是 1 ~ 31 之间的一个整数。
document.write(mydate.getdate());
输出:26
document.write(mydate.getdate());
输出:21
4、getday() 方法可返回表示星期的某一天的数字,它的取值范围:0--6
document.write(mtdate.getday());
输出4
为此我们可以采用date对象和array对象结合的方式将时间人性化显示出来,下面这种方法非常常用
weekday[0]="sunday";
weekday[1]="monday";
weekday[2]="tuesday";
weekday[3]="wednesday";
weekday[4]="thursday";
weekday[5]="friday";
weekday[6]="saturday";
var mydate = new date();
document.write(weekday[mydate.getday()]);
5、getmonth(),返回月份字段,返回值是 0(一月) 到 11(十二月) 之间的一个整数
和getday()类似,我们也采用与array对象相结合的方式
var month=new array(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("the month is " + month[d.getmonth()]);
6、getfullyear() 方法可返回一个表示年份的 4 位数字。
返回值是一个四位数,表示包括世纪值在内的完整年份,而不是两位数的缩写形式。
document.write(d.getfullyear());
输出:
2012
document.write("i was born in " + born.getfullyear());
输出:
1983
通过上述方法三种方法结合我们就可以得出比较人性化的时间显示,例:
weekday[0]="sunday"
weekday[1]="monday"
weekday[2]="tuesday"
weekday[3]="wednesday"
weekday[4]="thursday"
weekday[5]="friday"
weekday[6]="saturday"
var month=new array(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";
var mydate = new date();
document.write("date is "+mydate.getfullyear()+" "+month[mydate.getmonth()]+" "+mydate.getdate()+" "+weekday[mydate.getday()]);
输出为:
date is 2012 october 19 friday
7、gethours() 方法可返回时间的小时字段,返回值是 0 (午夜) 到 23 (晚上 11 点)之间的一个整数。
document.write(born.gethours());
输出:1
注释:由 gethours() 返回的值是一个两位的数字。
不过返回值不总是两位的,如果该值小于 10,则仅返回一位数字。
8、getminutes() 方法可返回时间的分钟字段,返回值是 0 ~ 59 之间的一个整数。
与上述方法类似,返回值不总是两位的,如果该值小于 10,则仅返回一位数字。
9、getseconds() 方法可返回时间的秒,返回值是 0 ~ 59 之间的一个整数。
与上述方法类似,返回值不总是两位的,如果该值小于 10,则仅返回一位数字。
10、getmilliseconds() 方法可返回时间的毫秒,毫秒字段,以本地时间显示。返回值是 0 ~ 999 之间的一个整数。
注释:由 getmilliseconds() 返回的值是一个三位的数字。
不过返回值不总是三位的,如果该值小于 100,则仅返回两位数字,如果该值小于 10,则仅返回一位数字。
下面我们有两种方式将时间显示出来:
--->方式一
document.write('time is '+d.gethours()+":"+d.getminutes()+":"+d.getseconds());
输出:time is 10:52:2,缺点很明显,在秒为<10的情况下只显示了一位,其他的也类似,因此推荐第二种显示方式
--->方式二
{
if(time<10)
{
time = '0'+time;
}
return time;
}
var d = new date();
document.write('time is '+checktime(d.gethours())+":"+checktime(d.getminutes())+":"+checktime(d.getseconds()));
输出:time is 10:55:02
11、gettime() 方法可返回本地时间距 1970 年 1 月 1 日之间的毫秒数,因此可以自定义date("jul 26 2000");
document.write(d.gettime() + " milliseconds since 1970/01/01");
输出:1350615452813 milliseconds since 1970/01/01
因此我们可以根据此数得到本地时间距离1970/01/01的年数
var hours = minutes*60;
var days = hours*24;
var years = days*365;
var d = new date();
var t = d.gettime();//获得距离1970/01/01的毫秒数
var y = t/years;
document.write("it's been: " + y + " years since 1970/01/01!");
输出:
it's been: 42.82773990521943 years since 1970/01/01!
注:此时的年份是一个小数,可以将其换成整数(其实javascript中没有整数的区别)
最后一行修改为:
输出:
it's been: 42 years since 1970/01/01!
parseint(float);可以将浮点类型转换为整型
12、gettimezoneoffset() 方法可返回格林威治时间和本地时间之间的时差,以分钟为单位。
注:
gettimezoneoffset() 方法返回的是本地时间与 gmt 时间或 utc 时间之间相差的分钟数。
实际上,该函数告诉我们运行 javascript 代码的时区,以及指定的时间是否是夏令时。
返回之所以以分钟计,而不是以小时计,原因是某些国家所占有的时区甚至不到一个小时的间隔。
document.write(d.gettimezoneoffset());
输出:
-480(东八区,8*60)
因此可以根据此方法来判断所在时区
{
if (zone==0)
{
return "零时区";
}
else if (zone>0)
{
return "西"+parseint(zone/60)+"区";
}
else
{
return "东"+parseint(math.abs(zone/60))+"区";
}
}
var d = new date();
document.write(checkzone(d.gettimezoneoffset()));
其中math.abs()为求绝对值
以上方法是自己原创,因为地理学的不好,不知道对不对,求指正
13、parse() 方法可解析一个日期时间字符串,并返回 1970/1/1 午夜距离该日期时间的毫秒数。
parse(str);str为字符串,是一个符合时间格式的字符串
var hours = minutes * 60;
var days = hours * 24;
var years = days * 365;
var t = date.parse("jul 8, 2005");
var y = t/years;
document.write("it's been: " + parseint(y) + " years from 1970/01/01");
document.write(" to 2005/07/08!");
输出为:
it's been: 35 years from 1970/01/01 to 2005/07/08!
14、setdate() 方法用于设置一个月的某一天。
setdate(day),day必需。表示一个月中的一天的一个数值(1 ~ 31)。
注,此方法是在原先对象的基础上进行修改,会改变原先数据的值
例:
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 之间。用本地时间表示。
document.write(d.getmonth()+" "+d.getdate()+"<br>");
d.setmonth(11,26);
document.write(d.getmonth()+" "+d.getdate());
输出为:
9 19
11 26
16、setfullyear() 方法用于设置年份。
setfullyear(year,month,day);
year 必需。表示年份的四位整数。用本地时间表示。
month 可选。表示月份的数值,介于 0 ~ 11 之间。用本地时间表示。
day 可选。表示月中某一天的数值,介于 1 ~ 31 之间。用本地时间表示。
d.setfullyear(1992,10,3);
document.write(d);
输出为:
tue nov 03 1992 11:31:58 gmt+0800
17、sethours() 方法用于设置指定的时间的小时字段。
sethours(hour,min,sec,millisec);
hour 必需。表示小时的数值,介于 0(午夜) ~ 23(晚上11点) 之间,以本地时间计(下同)。
min 可选。表示分钟的数值,介于 0 ~ 59 之间。在 emcascript 标准化之前,不支持该参数。
sec 可选。表示秒的数值,介于 0 ~ 59 之间。在 emcascript 标准化之前,不支持该参数。
millisec 可选。表示毫秒的数值,介于 0 ~ 999之间。在 emcascript 标准化之前,不支持该参数。
d.sethours(15,35,1)
document.write(d)
输出为:
fri oct 19 15:35:01 utc+0800 2012
18、setminutes() 方法用于设置指定时间的分钟字段。
setminutes(min,sec,millisec)
min 必需。表示分钟的数值,介于 0 ~ 59 之间,以本地时间计(下同)。
sec 可选。表示秒的数值,介于 0 ~ 59 之间。在 emcascript 标准化之前,不支持该参数。
millisec 可选。表示毫秒的数值,介于 0 ~ 999 之间。在 emcascript 标准化之前,不支持该参数。
d.setminutes(1)
document.write(d)
输出为:
fri oct 19 11:01:11 utc+0800 2012
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() 方法获得该值。以毫秒形式表示日期可以使它独立于时区。
d.settime(77771564221);
document.write(d);
输出为:
mon jun 19 1972 11:12:44 gmt+0800
此种方法就可以根据数据库中存放的long数据类型将其转换为了时间对象
22、totimestring() 方法可把 date 对象的时间部分转换为字符串,并返回结果。
document.write(d.totimestring());
输出:
11:50:57 gmt+0800
23、todatestring() 方法可把 date 对象的日期部分转换为字符串,并返回结果。
document.write(d.todatestring());
输出:
fri oct 19 2012
24、还有很多设计utc时区的一些方法,此处没有列出,仅仅是对一般的通用较多的方法汇总了下
查看更多javascript的语法,大家可以关注:《javascript 参考教程》、《javascript代码风格指南》,也希望大家多多支持。
上一篇: 茄子炖土豆什么做法最好吃
推荐阅读
-
javascript 写类方式之五_js面向对象
-
JavaScript之对象继承
-
深入理解JavaScript系列(29):设计模式之装饰者模式详解_javascript技巧
-
javascript history对象详解
-
javascript中Date类的详解(代码示例)
-
JavaScript入门之对象与JSON详解_基础知识
-
前端笔记之JavaScript面向对象(四)组件化开发&轮播图|俄罗斯方块实战
-
JavaScript 面向对象的之私有成员和公开成员_js面向对象
-
javascript 模式设计之工厂模式学习心得_js面向对象
-
Javascript 学习笔记之 对象篇(二) : 原型对象_基础知识