JavaScript Date对象详解
本篇主要介绍Date日期和时间对象的操作,具体内容如下
目录
1.介绍:阐述Date对象。
2.构造函数:介绍Date对象的构造函数newDate()几种方式。
3.实例方法:介绍Date对象的get、set等实例方法。
4.静态方法:介绍Date对象的静态方法:Date.now()、Date.parse()等。
5.实际操作:介绍Date对象的一些示例:获取倒计时、比较2个Date对象的大小等等。
一.介绍
1.1说明
Date对象,是操作日期和时间的对象。Date对象对日期和时间的操作只能通过方法。
1.2属性
无;Date对象对日期和时间的操作只能通过方法。
二.构造函数
2.1newDate():返回当前的本地日期和时间
参数:无
返回值:
{Date}返回一个表示本地日期和时间的Date对象。
示例:
vardt=newDate(); console.log(dt);//=>返回一个表示本地日期和时间的Date对象
2.2newDate(milliseconds):把毫秒数转换为Date对象
参数:
①milliseconds{int}:毫秒数;表示从'1970/01/0100:00:00'为起点,开始叠加的毫秒数。
注意:起点的时分秒还要加上当前所在的时区,北京时间的时区为东8区,起点时间实际为:'1970/01/0108:00:00'
返回值:
{Date}返回一个叠加后的Date对象。
示例:
vardt=newDate(1000*60*1);//前进1分钟的毫秒数 console.log(dt);//=>{Date}:1970/01/0108:01:00 dt=newDate(-1000*60*1);//倒退1分钟的毫秒数 console.log(dt);//=>{Date}:1970/01/0107:59:00
2.3newDate(dateStr):把字符串转换为Date对象
参数:
①dateStr{string}:可转换为Date对象的字符串(可省略时间);字符串的格式主要有两种:
1)yyyy/MM/ddHH:mm:ss(推荐):若省略时间,返回的Date对象的时间为00:00:00。
2)yyyy-MM-ddHH:mm:ss:若省略时间,返回的Date对象的时间为08:00:00(加上本地时区)。若不省略时间,此字符串在IE中会转换失败!
返回值:
{Date}返回一个转换后的Date对象。
示例:
vardt=newDate('2014/12/25');//yyyy/MM/dd console.log(dt);//=>{Date}:2014/12/2500:00:00 dt=newDate('2014/12/2512:00:00');//yyyy/MM/ddHH:mm:ss console.log(dt);//=>{Date}:2014/12/2512:00:00 dt=newDate('2014-12-25');//yyyy-MM-dd console.log(dt);//=>{Date}:2014-12-2508:00:00(加上了东8区的时区) dt=newDate('2014-12-2512:00:00');//yyyy-MM-ddHH:mm:ss(注意:此转换方式在IE中会报错!) console.log(dt);//=>{Date}:2014-12-2512:00:00
2.4newDate(year,month,opt_day,opt_hours,opt_minutes,opt_seconds,opt_milliseconds):把年月日、时分秒转换为Date对象
参数:
①year{int}:年份;4位数字。如:1999、2014
②month{int}:月份;2位数字。从0开始计算,0表示1月份、11表示12月份。
③opt_day{int}可选:号;2位数字;从1开始计算,1表示1号。
④opt_hours{int}可选:时;2位数字;取值0~23。
⑤opt_minutes{int}可选:分;2位数字;取值0~59。
⑥opt_seconds{int}可选:秒;2未数字;取值0~59。
⑦opt_milliseconds{int}可选:毫秒;取值0~999。
返回值:
{Date}返回一个转换后的Date对象。
示例:
vardt=newDate(2014,11);//2014年12月(这里输入的月份数字为11) console.log(dt);//=>{Date}:2014/12/0100:00:00 dt=newDate(2014,11,25);//2014年12月25日 console.log(dt);//=>{Date}:2014/12/2500:00:00 dt=newDate(2014,11,25,15,30,40);//2014年12月25日15点30分40秒 console.log(dt);//=>{Date}:2014/12/2515:30:40 dt=newDate(2014,12,25);//2014年13月25日(这里输入的月份数字为12,表示第13个月,跳转到第二年的1月) console.log(dt);//=>{Date}:2015/01/25
三.实例方法
Date对象的实例方法主要分为2种形式:本地时间和UTC时间。同一个方法,一般都会有此2种时间格式操作(方法名带UTC的,就是操作UTC时间),这里主要介绍对本地时间的操作。
3.1get方法
3.1.1getFullYear():返回Date对象的年份值;4位年份。
3.1.2getMonth():返回Date对象的月份值。从0开始,所以真实月份=返回值+1。
3.1.3getDate():返回Date对象的月份中的日期值;值的范围1~31。
3.1.4getHours():返回Date对象的小时值。
3.1.5getMinutes():返回Date对象的分钟值。
3.1.6getSeconds():返回Date对象的秒数值。
3.1.7getMilliseconds():返回Date对象的毫秒值。
3.1.8getDay():返回Date对象的一周中的星期值;0为星期天,1为星期一、2为星期二,依此类推
3.1.9getTime():返回Date对象与'1970/01/0100:00:00'之间的毫秒值(北京时间的时区为东8区,起点时间实际为:'1970/01/0108:00:00')。
示例:
dt.getFullYear();//=>2014:年 dt.getMonth();//=>11:月;实际为12月份(月份从0开始计算) dt.getDate();//=>25:日 dt.getHours();//=>15:时 dt.getMinutes();//=>30:分 dt.getSeconds();//=>40:秒 dt.getMilliseconds();//=>333:毫秒 dt.getDay();//=>4:星期几的值 dt.getTime();//=>1419492640333:返回Date对象与'1970/01/0100:00:00'之间的毫秒值(北京时间的时区为东8区,起点时间实际为:'1970/01/0108:00:00')
3.2set方法
3.2.1setFullYear(year,opt_month,opt_date):设置Date对象的年份值;4位年份。
3.2.2setMonth(month,opt_date):设置Date对象的月份值。0表示1月,11表示12月。
3.2.3setDate(date):设置Date对象的月份中的日期值;值的范围1~31。
3.2.4setHours(hour,opt_min,opt_sec,opt_msec):设置Date对象的小时值。
3.2.5setMinutes(min,opt_sec,opt_msec):设置Date对象的分钟值。
3.2.6setSeconds(sec,opt_msec):设置Date对象的秒数值。
3.2.7setMilliseconds(msec):设置Date对象的毫秒值。
示例:
vardt=newDate(); dt.setFullYear(2014);//=>2014:年 dt.setMonth(11);//=>11:月;实际为12月份(月份从0开始计算) dt.setDate(25);//=>25:日 dt.setHours(15);//=>15:时 dt.setMinutes(30);//=>30:分 dt.setSeconds(40);//=>40:秒 dt.setMilliseconds(333);//=>333:毫秒 console.log(dt);//=>2014年12月25日15点30分40秒333毫秒
3.3其他方法
3.3.1toString():将Date转换为一个'年月日时分秒'字符串
3.3.2toLocaleString():将Date转换为一个'年月日时分秒'的本地格式字符串
3.3.3toDateString():将Date转换为一个'年月日'字符串
3.3.4toLocaleDateString():将Date转换为一个'年月日'的本地格式字符串
3.3.5toTimeString():将Date转换为一个'时分秒'字符串
3.3.6toLocaleTimeString():将Date转换为一个'时分秒'的本地格式字符串
3.3.7valueOf():与getTime()一样,返回Date对象与'1970/01/0100:00:00'之间的毫秒值(北京时间的时区为东8区,起点时间实际为:'1970/01/0108:00:00')
示例:
vardt=newDate(); console.log(dt.toString());//=>TueDec23201422:56:11GMT+0800(中国标准时间):将Date转换为一个'年月日时分秒'字符串 console.log(dt.toLocaleString());//=>2014年12月23日下午10:56:11:将Date转换为一个'年月日时分秒'的本地格式字符串 console.log(dt.toDateString());//=>TueDec232014:将Date转换为一个'年月日'字符串 console.log(dt.toLocaleDateString());//=>2014年12月23日:将Date转换为一个'年月日'的本地格式字符串 console.log(dt.toTimeString());//=>22:56:11GMT+0800(中国标准时间):将Date转换为一个'时分秒'字符串 console.log(dt.toLocaleTimeString());//=>下午10:56:11:将Date转换为一个'时分秒'的本地格式字符串 console.log(dt.valueOf());//=>返回Date对象与'1970/01/0100:00:00'之间的毫秒值(北京时间的时区为东8区,起点时间实际为:'1970/01/0108:00:00')
四.静态方法
4.1Date.now()
说明:返回当前日期和时间的Date对象与'1970/01/0100:00:00'之间的毫秒值(北京时间的时区为东8区,起点时间实际为:'1970/01/0108:00:00')
参数:无
返回值:
{int}:当前时间与起始时间之间的毫秒数。
示例:
console.log(Date.now());//=>1419431519276
4.2Date.parse(dateStr)
说明:把字符串转换为Date对象,然后返回此Date对象与'1970/01/0100:00:00'之间的毫秒值(北京时间的时区为东8区,起点时间实际为:'1970/01/0108:00:00')
参数:
①dateStr{string}:可转换为Date对象的字符串(可省略时间);字符串的格式主要有两种:
1)yyyy/MM/ddHH:mm:ss(推荐):若省略时间,返回的Date对象的时间为00:00:00。
2)yyyy-MM-ddHH:mm:ss:若省略时间,返回的Date对象的时间为08:00:00(加上本地时区)。若不省略时间,此字符串在IE中返回NaN(非数字)!
返回值:
{int}返回转换后的Date对象与起始时间之间的毫秒数。
示例:
console.log(Date.parse('2014/12/2512:00:00'));//=>1419480000000 console.log(Date.parse('2014-12-2512:00:00'));//=>1419480000000(注意:此转换方式在IE中返回NaN!)
五. 实际操作
5.1C#的DateTime类型转换为Js的Date对象
说明:C#的DateTime类型通过Json序列化返回给前台的格式为:"\/Date(1419492640000)\/"。中间的数字,表示DateTime的值与起始时间之间的毫秒数。
示例:
后台代码:简单的ashx
publicvoidProcessRequest(HttpContextcontext){ System.Web.Script.Serialization.JavaScriptSerializerjs=newSystem.Web.Script.Serialization.JavaScriptSerializer(); DateTimedt=DateTime.Parse("2014-12-2515:30:40"); stringrs=js.Serialize(dt);//序列化成Json context.Response.ContentType="text/plain"; context.Response.Write(rs); }
前台代码:
vardateTimeJsonStr='\/Date(1419492640000)\/';//C#DateTime类型转换的Json格式 varmsecStr=dateTimeJsonStr.toString().replace(/\/Date\(([-]?\d+)\)\//gi,"$1");//=>'1419492640000':通过正则替换,获取毫秒字符串 varmsesInt=Number.parseInt(msecStr);//毫秒字符串转换成数值 vardt=newDate(msesInt);//初始化Date对象 console.log(dt.toLocaleString());//=>2014年12月25日下午3:30:40
5.2 获取倒计时
说明:计算当前时间离目的时间相差多少天时分。
示例:
/** *返回倒计时 *@paramdt{Date}:目的Date对象 *@return{Strin}:返回倒计时:X天X时X分 */ functiongetDownTime(dt){ //1.获取倒计时 varintervalMsec=dt-Date.now();//目的时间减去现在的时间,获取两者相差的毫秒数 varintervalSec=intervalMsec/1000;//转换成秒数 varday=parseInt(intervalSec/3600/24);//天数 varhour=parseInt((intervalSec-day*24*3600)/3600);//小时 varmin=parseInt((intervalSec-day*24*3600-hour*3600)/60);//分钟 //2.若相差的毫秒小于0,表示目的时间小于当前时间,这时的取的值都是负的:-X天-时-分,显示时,只显示天数前面为负的就行。 if(intervalMsec<0){ hour=0-hour; min=0-min; } //3.拼接字符串并返回 varrs=day+'天'+hour+'时'+min+'分'; returnrs; } //当前时间:2014/12/2813:26 console.log(getDownTime(newDate('2015/06/01')));//=>154天10时33分 console.log(getDownTime(newDate('2014/01/01')));//=>-361天13时26分
5.3比较2个Date对象的大小
说明:可以对比2者的与起始时间的毫秒数,来区分大小。
示例:
vardt1=newDate('2015/12/01'); vardt2=newDate('2015/12/25'); console.log(dt1>dt2);//=>false
以上就是本文的全部内容,希望对大家的学习有所帮助。