您好,欢迎访问一九零五行业门户网

简单谈谈javascript Date类型_javascript技巧

1 创建一个新的日期对象,如果不带参数,则对象自动获得当前的日期和时间
var d = new date()
2 如果需要指定特定的日期,则可以通过date.parse() 或者 date().utc(),返回时间戳作为 new date()的参数
date.parse() 用法:
var time = date.parse('2015/05/20');var newdate = new date(time);//wed may 20 2015 00:00:00 gmt+0800 (中国标准时间)//转换为格林威治时间newdate.toutcstring(); //tue, 19 may 2015 16:00:00 gmt
也可以直接 new date('2015/05/20') 指定日期,new date() 构造函数会自动调用 date.parse()静态方法。
date.utc()
date.utc()的参数分别是年,月(从0到11),日(1-31),时(0-23),分(0-59),秒(0-59),毫秒(0-999),最少参数2个,即应该包含年月,其他不填的默认为0。
如果要创建的时间为中国标准时间的2015年5月20日,则代码应表示为
var mydate = new date(date.utc(2015,5,19,16,0,0)) //sat jun 20 2015 00:00:00 gmt+0800//格林威治时间mydate.toutcstring() // fri, 19 jun 2015 16:00:00 gmt
其他:
var d = new date();//年d.getfullyear() //月d.getmonth()//日d.getdate()
下面我们通过具体的示例来看看
/** * 日期时间脚本库方法列表: * (1)date.isvalidate:日期合法性验证 * (2)date.isvalitime:时间合法性验证 * (3)date.isvalidatetime:日期和时间合法性验证 * (4)date.prototype.isleapyear:判断是否闰年 * (5)date.prototype.format:日期格式化 * (6)date.stringtodate:字符串转成日期类型 * (7)date.daysbetween:计算两个日期的天数差 * (8)date.prototype.dateadd:日期计算,支持正负数 * (9)date.prototype.datediff:比较日期差:比较两个时期相同的字段,返回相差值 * (10)date.prototype.toarray:把日期分割成数组:按数组序号分别为:年月日时分秒 * (11)date.prototype.datepart:取得日期数据信息 */ /** * 日期合法性验证:判断datastr是否符合formatstr指定的日期格式 * 示例: * (1)alert(date.isvalidate('2008-02-29','yyyy-mm-dd'));//true * (2)alert(date.isvalidate('aaaa-58-29','yyyy-mm-dd'));//false * datestr:必选,日期字符串 * formatstr:可选,格式字符串,可选格式有:(1)yyyy-mm-dd(默认格式)或yyyy-mm-dd (2)yyyy/mm/dd或yyyy/mm/dd (3)mm-dd-yyyy或mm-dd-yyyy (4)mm/dd/yyyy或mm/dd/yyyy */ date.isvalidate = function(datestr, formatstr) { if(!datestr){ return false; } if(!formatstr){ formatstr = yyyy-mm-dd;//默认格式:yyyy-mm-dd } if(datestr.length!=formatstr.length){ return false; }else{ if(formatstr==yyyy-mm-dd||formatstr==yyyy-mm-dd){ var r1=/^(((((([02468][048])|([13579][26]))(00))|(\d{2}(([02468][48])|([13579][26]))))\-((((0[13578])|(1[02]))\-(([0-2][0-9])|(3[01])))|(((0[469])|(11))\-(([0-2][0-9])|(30)))|(02\-([0-2][0-9]))))|(\d{2}(([02468][1235679])|([13579][01345789]))\-((((0[13578])|(1[02]))\-(([0-2][0-9])|(3[01])))|(((0[469])|(11))\-(([0-2][0-9])|(30)))|(02\-(([0-1][0-9])|(2[0-8]))))))$/; return r1.test(datestr); }else if(formatstr==yyyy/mm/dd||formatstr==yyyy/mm/dd){ var r2=/^(((((([02468][048])|([13579][26]))(00))|(\d{2}(([02468][48])|([13579][26]))))\/((((0[13578])|(1[02]))\/(([0-2][0-9])|(3[01])))|(((0[469])|(11))\/(([0-2][0-9])|(30)))|(02\/([0-2][0-9]))))|(\d{2}(([02468][1235679])|([13579][01345789]))\/((((0[13578])|(1[02]))\/(([0-2][0-9])|(3[01])))|(((0[469])|(11))\/(([0-2][0-9])|(30)))|(02\/(([0-1][0-9])|(2[0-8]))))))$/; return r2.test(datestr); }else if(formatstr==mm-dd-yyyy||formatstr==mm-dd-yyyy){ var r3=/^((((((0[13578])|(1[02]))\-(([0-2][0-9])|(3[01])))|(((0[469])|(11))\-(([0-2][0-9])|(30)))|(02\-([0-2][0-9])))\-(((([02468][048])|([13579][26]))(00))|(\d{2}(([02468][48])|([13579][26])))))|(((((0[13578])|(1[02]))\-(([0-2][0-9])|(3[01])))|(((0[469])|(11))\-(([0-2][0-9])|(30)))|(02\-(([0-1][0-9])|(2[0-8])))))\-\d{2}(([02468][1235679])|([13579][01345789])))$/; return r3.test(datestr); }else if(formatstr==mm/dd/yyyy||formatstr==mm/dd/yyyy){ var r4=/^((((((0[13578])|(1[02]))\/(([0-2][0-9])|(3[01])))|(((0[469])|(11))\/(([0-2][0-9])|(30)))|(02\/([0-2][0-9])))\/(((([02468][048])|([13579][26]))(00))|(\d{2}(([02468][48])|([13579][26])))))|(((((0[13578])|(1[02]))\/(([0-2][0-9])|(3[01])))|(((0[469])|(11))\/(([0-2][0-9])|(30)))|(02\/(([0-1][0-9])|(2[0-8])))))\/\d{2}(([02468][1235679])|([13579][01345789])))$/; return r4.test(datestr); }else{ alert(日期格式不正确!); return false; } } return false; } /** * 时间合法性验证:判断timestr是否符合formatstr指定的时间格式 * 示例: * (1)alert(date.isvalitime('23:59:59','hh:mm:ss'));//true * (2)alert(date.isvalitime('24-68-89','hh:mm:ss'));//false * timestr:必选,日期字符串 * formatstr:可选,格式字符串,可选格式有:(1)hh:mm:ss(默认格式) (2)hh-mm-ss (3)hh/mm/ss */ date.isvalitime = function(timestr, formatstr) { if(!timestr){ return false; } if(!formatstr){ formatstr = hh:mm:ss;//默认格式:hh:mm:ss } if(timestr.length!=formatstr.length){ return false; }else{ if(formatstr==hh:mm:ss){ var r1=/^(([0-1][0-9])|(2[0-3]))\:([0-5][0-9])\:([0-5][0-9])$/; return r1.test(timestr); }else if(formatstr==hh-mm-ss){ var r2=/^(([0-1][0-9])|(2[0-3]))\-([0-5][0-9])\-([0-5][0-9])$/; return r2.test(timestr); }else if(formatstr==hh/mm/ss){ var r3=/^(([0-1][0-9])|(2[0-3]))\/([0-5][0-9])\/([0-5][0-9])$/; return r3.test(timestr); }else{ alert(时间格式不正确!); return false; } } return false; } /** * 日期和时间合法性验证 * 格式:yyyy-mm-dd hh:mm:ss */ date.isvalidatetime = function(datetimestr) { var datetimereg=/^(((((([02468][048])|([13579][26]))(00))|(\d{2}(([02468][48])|([13579][26]))))\-((((0[13578])|(1[02]))\-(([0-2][0-9])|(3[01])))|(((0[469])|(11))\-(([0-2][0-9])|(30)))|(02\-([0-2][0-9]))))|(\d{2}(([02468][1235679])|([13579][01345789]))\-((((0[13578])|(1[02]))\-(([0-2][0-9])|(3[01])))|(((0[469])|(11))\-(([0-2][0-9])|(30)))|(02\-(([0-1][0-9])|(2[0-8]))))))(\s{1}(([0-1][0-9])|(2[0-3]))\:([0-5][0-9])\:([0-5][0-9]))?$/ return datetimereg.test(datetimestr); } /** * 判断闰年 :一般规律为:四年一闰,百年不闰,四百年再闰。 */ date.prototype.isleapyear = function() { return (this.getyear()%4==0&&((this.getyear()%100!=0)||(this.getyear()%400==0))); } /** * 日期格式化: * formatstr:可选,格式字符串,默认格式:yyyy-mm-dd hh:mm:ss * 约定如下格式: * (1)yyyy/yyyy/yy/yy 表示年份 * (2)mm/m 月份 * (3)w/w 星期 * (4)dd/dd/d/d 日期 * (5)hh/hh/h/h 时间 * (6)mm/m 分钟 * (7)ss/ss/s/s 秒 * (8)iii 毫秒 */ date.prototype.format = function(formatstr) { var str = formatstr; if(!formatstr){ str = yyyy-mm-dd hh:mm:ss;//默认格式 } var week = ['日','一','二','三','四','五','六']; str=str.replace(/yyyy|yyyy/,this.getfullyear()); str=str.replace(/yy|yy/,(this.getyear() % 100)>9?(this.getyear() % 100).tostring():'0' + (this.getyear() % 100)); str=str.replace(/mm/,this.getmonth()>=9?(parseint(this.getmonth())+1).tostring():'0' + (parseint(this.getmonth())+1)); str=str.replace(/m/g,(parseint(this.getmonth())+1)); str=str.replace(/w|w/g,week[this.getday()]); str=str.replace(/dd|dd/,this.getdate()>9?this.getdate().tostring():'0' + this.getdate()); str=str.replace(/d|d/g,this.getdate()); str=str.replace(/hh|hh/,this.gethours()>9?this.gethours().tostring():'0' + this.gethours()); str=str.replace(/h|h/g,this.gethours()); str=str.replace(/mm/,this.getminutes()>9?this.getminutes().tostring():'0' + this.getminutes()); str=str.replace(/m/g,this.getminutes()); str=str.replace(/ss|ss/,this.getseconds()>9?this.getseconds().tostring():'0' + this.getseconds()); str=str.replace(/s|s/g,this.getseconds()); str=str.replace(/iii/g,this.getmilliseconds()<10?'00'+this.getmilliseconds():(this.getmilliseconds()<100?'0'+this.getmilliseconds():this.getmilliseconds())); return str; } /** * 字符串转成日期类型: * datestr:必选,日期字符串,如果无法解析成日期类型,返回null * 格式: * (1)yyyy/mm/dd:ie和ff通用 * (2)mm/dd/yyyy:ie和ff通用 * (3)mm-dd-yyyy:仅ie * (4)yyyy-mm-dd:非ie,且时钟被解析在8点整 */ date.stringtodate = function(datestr) { if(!datestr){ alert(字符串无法解析为日期); return null; }else{ if(date.isvalidate(datestr,yyyy/mm/dd)||date.isvalidate(datestr,mm/dd/yyyy)){ return new date(date.parse(datestr)); }else{ if((!-[1,])){//ie if(date.isvalidate(datestr,mm-dd-yyyy)){ return new date(date.parse(datestr)); }else{ alert(字符串无法解析为日期); return null; } }else{//非ie if(date.isvalidate(datestr,yyyy-mm-dd)){ return new date(date.parse(datestr)); }else{ alert(字符串无法解析为日期); return null; } } } } return null; } /** * 计算两个日期的天数差: * dateone:必选,必须是data类型的实例 * datetwo:必选,必须是data类型的实例 */ date.daysbetween = function(dateone,datetwo) { if((dateone instanceof date)==false||(datetwo instanceof date)==false){ return 0; }else{ return math.abs(math.floor((dateone.gettime()-datetwo.gettime())/1000/60/60/24)); } } /** * 日期计算:支持负数,即可加可减,返回计算后的日期 * num:必选,必须是数字,且正数是时期加,负数是日期减 * field:可选,标识是在哪个字段上进行相加或相减,字段见如下的约定。无此参数时,默认为d * 约定如下格式: * (1)y/y 年 * (2)m 月 * (3)w/w 周 * (4)d/d 日 * (5)h/h 时 * (6)m 分 * (7)s/s 秒 * (8)q/q 季 */ date.prototype.dateadd = function(num, field) { if((!num)||isnan(num)||parseint(num)==0){ return this; } if(!field){ field = d; } switch(field){ case 'y': case 'y':return new date((this.getfullyear()+num), this.getmonth(), this.getdate(), this.gethours(), this.getminutes(), this.getseconds());break; case 'q': case 'q':return new date(this.getfullyear(), (this.getmonth()+num*3), this.getdate(), this.gethours(), this.getminutes(), this.getseconds());break; case 'm':return new date(this.getfullyear(), this.getmonth()+num, this.getdate(), this.gethours(), this.getminutes(), this.getseconds());break; case 'w': case 'w':return new date(date.parse(this) + ((86400000 * 7) * num));break; case 'd': case 'd':return new date(date.parse(this) + (86400000 * num));break; case 'h': case 'h':return new date(date.parse(this) + (3600000 * num));break; case 'm':return new date(date.parse(this) + (60000 * num));break; case 's': case 's':return new date(date.parse(this) + (1000 * num));break; default: return this; } return this; } /** * 比较日期差:比较两个时期相同的字段,返回相差值 * dtend:必选,必须是data类型的实例 * field:可选,标识是在哪个字段上进行比较,字段见如下的约定。无此参数时,默认为d * 约定如下格式: * (1)y/y 年 * (2)m 月 * (3)w/w 周 * (4)d/d 日 * (5)h/h 时 * (6)m 分 * (7)s/s 秒 */ date.prototype.datediff = function(dtend, field) { var dtstart = this; if((dtend instanceof date)==false){ return 0; }else{ if(!field){ field = d; } switch(field){ case 'y': case 'y':return dtend.getfullyear() - dtstart.getfullyear();break; case 'm':return (dtend.getmonth()+1)+((dtend.getfullyear()-dtstart.getfullyear())*12) - (dtstart.getmonth()+1);break; case 'w': case 'w':return parseint((dtend - dtstart) / (86400000 * 7));break; case 'd': case 'd':return parseint((dtend - dtstart) / 86400000);break; case 'h': case 'h':return parseint((dtend - dtstart) / 3600000);break; case 'm':return parseint((dtend - dtstart) / 60000);break; case 's': case 's':return parseint((dtend - dtstart) / 1000);break; default: return 0; } return 0; } } /** * 把日期分割成数组:按数组序号分别为:年月日时分秒 */ date.prototype.toarray = function() { var myarray = new array(); myarray[0] = this.getfullyear(); myarray[1] = this.getmonth(); myarray[2] = this.getdate(); myarray[3] = this.gethours(); myarray[4] = this.getminutes(); myarray[5] = this.getseconds(); return myarray; } /** * 取得日期数据信息: * field:可选,标识是在哪个字段上进行比较,字段见如下的约定。无此参数时,默认为d * (1)y/y 年 * (2)m 月 * (3)w/w 周 * (4)d/d 日 * (5)h/h 时 * (6)m 分 * (7)s/s 秒 */ date.prototype.datepart = function(field) { if(!field){ field = d; } var week = ['日','一','二','三','四','五','六']; switch (field){ case 'y' : case 'y' :return this.getfullyear();break; case 'm' :return (this.getmonth()+1);break; case 'w' : case 'w' :return week[this.getday()];break; case 'd' : case 'd' :return this.getdate();break; case 'h' : case 'h' :return this.gethours();break; case 'm' :return this.getminutes();break; case 's' :return this.getseconds();break; default:return this.getdate(); } return this.getdate(); }
其它类似信息

推荐信息