`
peiwisdom
  • 浏览: 21563 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论
阅读更多
2007-02-26
js日期时间函数(经典+完善+实用)
关键字: js 日期 时间 函数
来自http://new.dlgzy.com/bbs/show.asp?id=42&bd=8&totable=1
日期时间脚本库方法列表

Date.prototype.isLeapYear 判断闰年
Date.prototype.Format 日期格式化
Date.prototype.DateAdd 日期计算
Date.prototype.DateDiff 比较日期差
Date.prototype.toString 日期转字符串
Date.prototype.toArray 日期分割为数组
Date.prototype.DatePart 取日期的部分信息
Date.prototype.MaxDayOfDate 取日期所在月的最大天数
Date.prototype.WeekNumOfYear 判断日期所在年的第几周
StringToDate 字符串转日期型
IsValidDate 验证日期有效性
CheckDateTime 完整日期时间检查
daysBetween 日期天数差


js 代码

1.//--------------------------------------------------- 
2.// 判断闰年 
3.//--------------------------------------------------- 
4.Date.prototype.isLeapYear = function()  
5.{  
6.    return (0==this.getYear()%4&&((this.getYear()%100!=0)||(this.getYear()%400==0)));  
7.}  
8. 
9.//--------------------------------------------------- 
10.// 日期格式化 
11.// 格式 YYYY/yyyy/YY/yy 表示年份 
12.// MM/M 月份 
13.// W/w 星期 
14.// dd/DD/d/D 日期 
15.// hh/HH/h/H 时间 
16.// mm/m 分钟 
17.// ss/SS/s/S 秒 
18.//--------------------------------------------------- 
19.Date.prototype.Format = function(formatStr)  
20.{  
21.    var str = formatStr;  
22.    var Week = ['日','一','二','三','四','五','六']; 
23. 
24.    str=str.replace(/yyyy|YYYY/,this.getFullYear());  
25.    str=str.replace(/yy|YY/,(this.getYear() % 100)>9?(this.getYear() % 100).toString():'0' + (this.getYear() % 100));  
26. 
27.    str=str.replace(/MM/,this.getMonth()>9?this.getMonth().toString():'0' + this.getMonth());  
28.    str=str.replace(/M/g,this.getMonth());  
29. 
30.    str=str.replace(/w|W/g,Week[this.getDay()]);  
31. 
32.    str=str.replace(/dd|DD/,this.getDate()>9?this.getDate().toString():'0' + this.getDate());  
33.    str=str.replace(/d|D/g,this.getDate());  
34. 
35.    str=str.replace(/hh|HH/,this.getHours()>9?this.getHours().toString():'0' + this.getHours());  
36.    str=str.replace(/h|H/g,this.getHours());  
37.    str=str.replace(/mm/,this.getMinutes()>9?this.getMinutes().toString():'0' + this.getMinutes());  
38.    str=str.replace(/m/g,this.getMinutes());  
39. 
40.    str=str.replace(/ss|SS/,this.getSeconds()>9?this.getSeconds().toString():'0' + this.getSeconds());  
41.    str=str.replace(/s|S/g,this.getSeconds());  
42. 
43.    return str;  
44.}  
45. 
46.//+--------------------------------------------------- 
47.//| 求两个时间的天数差 日期格式为 YYYY-MM-dd  
48.//+--------------------------------------------------- 
49.function daysBetween(DateOne,DateTwo) 
50.{  
51.    var OneMonth = DateOne.substring(5,DateOne.lastIndexOf ('-')); 
52.    var OneDay = DateOne.substring(DateOne.length,DateOne.lastIndexOf ('-')+1); 
53.    var OneYear = DateOne.substring(0,DateOne.indexOf ('-')); 
54. 
55.    var TwoMonth = DateTwo.substring(5,DateTwo.lastIndexOf ('-')); 
56.    var TwoDay = DateTwo.substring(DateTwo.length,DateTwo.lastIndexOf ('-')+1); 
57.    var TwoYear = DateTwo.substring(0,DateTwo.indexOf ('-')); 
58. 
59.    var cha=((Date.parse(OneMonth+'/'+OneDay+'/'+OneYear)- Date.parse(TwoMonth+'/'+TwoDay+'/'+TwoYear))/86400000);  
60.    return Math.abs(cha); 
61.} 
62. 
63. 
64.//+--------------------------------------------------- 
65.//| 日期计算 
66.//+--------------------------------------------------- 
67.Date.prototype.DateAdd = function(strInterval, Number) {  
68.    var dtTmp = this; 
69.    switch (strInterval) {  
70.        case 's' :return new Date(Date.parse(dtTmp) + (1000 * Number)); 
71.        case 'n' :return new Date(Date.parse(dtTmp) + (60000 * Number)); 
72.        case 'h' :return new Date(Date.parse(dtTmp) + (3600000 * Number)); 
73.        case 'd' :return new Date(Date.parse(dtTmp) + (86400000 * Number)); 
74.        case 'w' :return new Date(Date.parse(dtTmp) + ((86400000 * 7) * Number)); 
75.        case 'q' :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number*3, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds()); 
76.        case 'm' :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds()); 
77.        case 'y' :return new Date((dtTmp.getFullYear() + Number), dtTmp.getMonth(), dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds()); 
78.    } 
79.} 
80. 
81.//+--------------------------------------------------- 
82.//| 比较日期差 dtEnd 格式为日期型或者 有效日期格式字符串 
83.//+--------------------------------------------------- 
84.Date.prototype.DateDiff = function(strInterval, dtEnd) {  
85.    var dtStart = this; 
86.    if (typeof dtEnd == 'string' )//如果是字符串转换为日期型 
87.    {  
88.        dtEnd = StringToDate(dtEnd); 
89.    } 
90.    switch (strInterval) {  
91.        case 's' :return parseInt((dtEnd - dtStart) / 1000); 
92.        case 'n' :return parseInt((dtEnd - dtStart) / 60000); 
93.        case 'h' :return parseInt((dtEnd - dtStart) / 3600000); 
94.        case 'd' :return parseInt((dtEnd - dtStart) / 86400000); 
95.        case 'w' :return parseInt((dtEnd - dtStart) / (86400000 * 7)); 
96.        case 'm' :return (dtEnd.getMonth()+1)+((dtEnd.getFullYear()-dtStart.getFullYear())*12) - (dtStart.getMonth()+1); 
97.        case 'y' :return dtEnd.getFullYear() - dtStart.getFullYear(); 
98.    } 
99.} 
100. 
101.//+--------------------------------------------------- 
102.//| 日期输出字符串,重载了系统的toString方法 
103.//+--------------------------------------------------- 
104.Date.prototype.toString = function(showWeek) 
105.{  
106.    var myDate= this; 
107.    var str = myDate.toLocaleDateString(); 
108.    if (showWeek) 
109.    {  
110.        var Week = ['日','一','二','三','四','五','六']; 
111.        str += ' 星期' + Week[myDate.getDay()]; 
112.    } 
113.    return str; 
114.} 
115. 
116.//+--------------------------------------------------- 
117.//| 日期合法性验证 
118.//| 格式为:YYYY-MM-DD或YYYY/MM/DD 
119.//+--------------------------------------------------- 
120.function IsValidDate(DateStr)  
121.{  
122.    var sDate=DateStr.replace(/(^\s+|\s+$)/g,''); //去两边空格;  
123.    if(sDate=='') return true;  
124.    //如果格式满足YYYY-(/)MM-(/)DD或YYYY-(/)M-(/)DD或YYYY-(/)M-(/)D或YYYY-(/)MM-(/)D就替换为''  
125.    //数据库中,合法日期可以是:YYYY-MM/DD(2003-3/21),数据库会自动转换为YYYY-MM-DD格式  
126.    var s = sDate.replace(/[\d]{ 4,4 }[\-/]{ 1 }[\d]{ 1,2 }[\-/]{ 1 }[\d]{ 1,2 }/g,'');  
127.    if (s=='') //说明格式满足YYYY-MM-DD或YYYY-M-DD或YYYY-M-D或YYYY-MM-D  
128.    {  
129.        var t=new Date(sDate.replace(/\-/g,'/'));  
130.        var ar = sDate.split(/[-/:]/);  
131.        if(ar[0] != t.getYear() || ar[1] != t.getMonth()+1 || ar[2] != t.getDate())  
132.        {  
133.            //alert('错误的日期格式!格式为:YYYY-MM-DD或YYYY/MM/DD。注意闰年。');  
134.            return false;  
135.        }  
136.    }  
137.    else  
138.    {  
139.        //alert('错误的日期格式!格式为:YYYY-MM-DD或YYYY/MM/DD。注意闰年。');  
140.        return false;  
141.    }  
142.    return true;  
143.}  
144. 
145.//+--------------------------------------------------- 
146.//| 日期时间检查 
147.//| 格式为:YYYY-MM-DD HH:MM:SS 
148.//+--------------------------------------------------- 
149.function CheckDateTime(str) 
150.{  
151.    var reg = /^(\d+)-(\d{ 1,2 })-(\d{ 1,2 }) (\d{ 1,2 }):(\d{ 1,2 }):(\d{ 1,2 })$/;  
152.    var r = str.match(reg);  
153.    if(r==null)return false;  
154.    r[2]=r[2]-1;  
155.    var d= new Date(r[1],r[2],r[3],r[4],r[5],r[6]);  
156.    if(d.getFullYear()!=r[1])return false;  
157.    if(d.getMonth()!=r[2])return false;  
158.    if(d.getDate()!=r[3])return false;  
159.    if(d.getHours()!=r[4])return false;  
160.    if(d.getMinutes()!=r[5])return false;  
161.    if(d.getSeconds()!=r[6])return false;  
162.    return true;  
163.}  
164. 
165.//+--------------------------------------------------- 
166.//| 把日期分割成数组 
167.//+--------------------------------------------------- 
168.Date.prototype.toArray = function() 
169.{  
170.    var myDate = this; 
171.    var myArray = Array(); 
172.    myArray[0] = myDate.getFullYear(); 
173.    myArray[1] = myDate.getMonth(); 
174.    myArray[2] = myDate.getDate(); 
175.    myArray[3] = myDate.getHours(); 
176.    myArray[4] = myDate.getMinutes(); 
177.    myArray[5] = myDate.getSeconds(); 
178.    return myArray; 
179.} 
180. 
181.//+--------------------------------------------------- 
182.//| 取得日期数据信息 
183.//| 参数 interval 表示数据类型 
184.//| y 年 m月 d日 w星期 ww周 h时 n分 s秒 
185.//+--------------------------------------------------- 
186.Date.prototype.DatePart = function(interval) 
187.{  
188.    var myDate = this; 
189.    var partStr=''; 
190.    var Week = ['日','一','二','三','四','五','六']; 
191.    switch (interval) 
192.    {  
193.        case 'y' :partStr = myDate.getFullYear();break; 
194.        case 'm' :partStr = myDate.getMonth()+1;break; 
195.        case 'd' :partStr = myDate.getDate();break; 
196.        case 'w' :partStr = Week[myDate.getDay()];break; 
197.        case 'ww' :partStr = myDate.WeekNumOfYear();break; 
198.        case 'h' :partStr = myDate.getHours();break; 
199.        case 'n' :partStr = myDate.getMinutes();break; 
200.        case 's' :partStr = myDate.getSeconds();break; 
201.    } 
202.    return partStr; 
203.} 
204. 
205.//+--------------------------------------------------- 
206.//| 取得当前日期所在月的最大天数 
207.//+--------------------------------------------------- 
208.Date.prototype.MaxDayOfDate = function() 
209.{  
210.    var myDate = this; 
211.    var ary = myDate.toArray(); 
212.    var date1 = (new Date(ary[0],ary[1]+1,1)); 
213.    var date2 = date1.dateAdd(1,'m',1); 
214.    var result = dateDiff(date1.Format('yyyy-MM-dd'),date2.Format('yyyy-MM-dd')); 
215.    return result; 
216.} 
217. 
218.//+--------------------------------------------------- 
219.//| 取得当前日期所在周是一年中的第几周 
220.//+--------------------------------------------------- 
221.Date.prototype.WeekNumOfYear = function() 
222.{  
223.    var myDate = this; 
224.    var ary = myDate.toArray(); 
225.    var year = ary[0]; 
226.    var month = ary[1]+1; 
227.    var day = ary[2]; 
228.    document.write('< script language=VBScript\> \n'); 
229.    document.write('myDate = DateValue(''+month+'-'+day+'-'+year+'') \n'); 
230.    document.write('result = DatePart('ww', myDate) \n'); 
231.    document.write(' \n'); 
232.    return result; 
233.} 
234. 
235.//+--------------------------------------------------- 
236.//| 字符串转成日期类型  
237.//| 格式 MM/dd/YYYY MM-dd-YYYY YYYY/MM/dd YYYY-MM-dd 
238.//+--------------------------------------------------- 
239.function StringToDate(DateStr) 
240.{  
241. 
242.    var converted = Date.parse(DateStr); 
243.    var myDate = new Date(converted); 
244.    if (isNaN(myDate)) 
245.    {  
246.        //var delimCahar = DateStr.indexOf('/')!=-1?'/':'-'; 
247.        var arys= DateStr.split('-'); 
248.        myDate = new Date(arys[0],--arys[1],arys[2]); 
249.    } 
250.    return myDate; 
251.} 
// 原文转载于网络,仅供学习。
分享到:
评论

相关推荐

    深入理解JavaScript系列

    本书是一本全面、深入介绍JavaScript语言的学习指南。本书共分四个部分,第1部分帮助读者快速入手,掌握基本的JavaScript编程要点;第2部分介绍JavaScript的发展和技术背景;第3部分深入探索JavaScript,介绍了语法...

    head first JavaScript源码

    《Head First JavaScript源码》是2010年出版的一本中文版JavaScript学习书籍的源码,这本书以其独特的视觉设计和易理解的方式深入浅出地介绍了JavaScript编程语言。JavaScript是一种广泛应用于网页和网络应用的脚本...

    JavaScript权威指南(JavaScript犀牛书一本)

    《JavaScript权威指南》是JavaScript编程领域的一本经典之作,由著名技术作家David Flanagan撰写,被誉为"JavaScript犀牛书"。这本书深入浅出地讲解了JavaScript语言的核心概念、语法特性和高级特性,对于想要全面...

    JavaScript语言精粹完整版

    《JavaScript语言精粹》作为一本深入浅出讲解JavaScript编程语言的经典之作,对于想要提升自己JavaScript技能的开发者来说,无疑是一份宝贵的资源。本书由Douglas Crockford所著,他不仅是JSON格式的创始人,也是...

    VS2015安装证书,JavaScript_ProjectSystem.msi,JavaScript_LanguageService.msi

    在这个场景中,我们关注的是VS2015的安装过程中涉及到的证书问题以及两个特定的组件:JavaScript_ProjectSystem.msi和JavaScript_LanguageService.msi。 首先,关于“VS2015安装证书”,这通常是指安装过程中需要...

    JavaScript之Math对象(源代码)

    JavaScript之Math对象(源代码)JavaScript之Math对象(源代码)JavaScript之Math对象(源代码)JavaScript之Math对象(源代码)JavaScript之Math对象(源代码)JavaScript之Math对象(源代码)JavaScript之Math对象...

    JavaScript学习指南 高清 PDF

    JavaScript,一种广泛应用于Web开发的脚本语言,是前端开发的核心技术之一。这份"JavaScript学习指南"高清PDF,无疑为想要深入理解JavaScript的初学者或有一定基础的开发者提供了宝贵的资源。下面,我们将深入探讨...

    《JavaScript程序设计案例教程》课件(共13章)第1章 JavaScript程序设计案例教程.pdf

    《JavaScript程序设计案例教程》课件(共13章)第1章 JavaScript程序设计案例教程.pdf《JavaScript程序设计案例教程》课件(共13章)第1章 JavaScript程序设计案例教程.pdf《JavaScript程序设计案例教程》课件(共13章)第...

    JavaScript全栈教程 (廖雪峰) 完整版PDF

    简单地说,JavaScript是一种运行在浏览器中的解释型的编程语言。在Web世界里,只有JavaScript能跨平台、跨浏览器驱动网 页,与用户交互。 《JavaScript全栈教程》是小白的零基础JavaScript全栈教程。从基础入门在...

    JavaScript书籍(JavaScript从入门到精通(第2版).pdf+高性能JavaScript.pdf)

    这两本书籍,"JavaScript从入门到精通(第2版)" 和 "高性能JavaScript",分别涵盖了JavaScript的基础知识和优化技巧,对于想要深入理解并提升JavaScript技能的开发者来说是宝贵的学习资源。 "JavaScript从入门到精通...

    web期末大作业 基于HTML+CSS+JavaScript实现的精美电商购物网站首页源码

    web期末大作业 基于HTML+CSS+JavaScript实现的精美电商购物网站首页源码 web期末大作业 基于HTML+CSS+JavaScript实现的精美电商购物网站首页源码 web期末大作业 基于HTML+CSS+JavaScript实现的精美电商购物网站首页...

    javascript试题(附答案)

    JavaScript是一种广泛应用于网页和网络应用的编程语言,尤其在客户端脚本方面扮演着核心角色。这份"javascript试题(附答案)"是为初学者设计的,旨在帮助他们更好地理解和掌握JavaScript的基础知识。 一、变量与数据...

    ArcGis-for-javaScript最全中文API.pdf

    ArcGIS JavaScript API 介绍与示例 ArcGIS JavaScript API 是 ESRI 提供的一种基于 JavaScript 的开发工具,允许开发者创建交互式的 Web 地图应用程序。本文将对 ArcGIS JavaScript API 进行详细的介绍,并提供多个...

    JavaScript 动态网页设计期末大作业CHASMISH眼镜网(纯手打,高分项目).zip

    JavaScript 动态网页设计期末大作业CHASMISH眼镜网(纯手打,高分项目)。 JavaScript 动态网页设计期末大作业CHASMISH眼镜网(纯手打,高分项目)。 JavaScript 动态网页设计期末大作业CHASMISH眼镜网(纯手打,...

    JavaScript结课大作业.zip

    JavaScript是一种广泛应用于网页和网络应用开发的脚本语言,它主要负责实现客户端的交互效果、动态更新内容以及处理用户输入。在"JavaScript结课大作业.zip"这个压缩包中,我们可以推测这是一份关于JavaScript编程的...

    HTML+CSS+Javascript详细手册大全 含9个chm文档资料合集

    3- JavaScript参考手册.chm 4- JavaScript参考手册中文版.chm 5- Javascript高级教程.CHM 6- JavaScript使用手册.chm 7- 网页制作完全手册.chm 8- 样式表滤镜中文手册.CHM 9- 样式表中文手册2.0.CHM

    JavaScript DOM编程艺术(第2版pdf)+源代码

    JavaScript DOM编程艺术(第2版)是一本深受程序员喜爱的JavaScript技术书籍,专注于讲解如何使用JavaScript与Document Object Model(DOM)进行交互。DOM是Web页面的结构化表示,它允许我们通过编程方式操纵HTML和XML...

    JavaScript权威指南(第6版)(中文版)

    《JavaScript权威指南(第6版)》全面介绍了JavaScript语言的核心,以及Web浏览器中实现的遗留和标准的DOM。它运用了一些复杂的例子,说明如何处理验证表单数据、使用cookie、创建可移植的DHTML动画等常见任务。...

    JavaScript基础语法(ppt)

    JavaScript基础语法(ppt)JavaScript基础语法(ppt)JavaScript基础语法(ppt)JavaScript基础语法(ppt)JavaScript基础语法(ppt)JavaScript基础语法(ppt)JavaScript基础语法(ppt)JavaScript基础语法(ppt)...

    javascript

    JavaScript是一种广泛用于网页开发的脚本语言,它是实现Web前端交互功能的核心技术之一。在给定的文件内容中,我们可以提取到关于JavaScript的多个知识点: 1. JavaScript的变量类型:JavaScript中主要有几种基本的...

Global site tag (gtag.js) - Google Analytics