查看完整版本: [-- js 日期时间函数 --]

风信Java论坛 ›› javascript/html/css 讨论交流中心 ›› js 日期时间函数 登录 -> 注册

1F js 日期时间函数   jastby Post by : 2009-06-25 10:40:18.0

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 日期天数差

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

 

2F Re:~ Date 对象   jastby Post by : 2009-06-25 10:51:44.0

Date 对象
启用基本存储器并取得日期和时间。

dateObj = new Date()
dateObj = new Date(dateVal)
dateObj = new Date(year, month, date[, hours[, minutes[, seconds[,ms]]]])

参数
dateObj
必选项。要赋值为 Date 对象的变量名。

dateVal
必选项。如果是数字值,dateVal 表示指定日期与 1970 年 1 月 1 日午夜间全球标准时间 的毫秒数。如果是字符串,则 dateVal 按照 parse 方法中的规则进行解析。dateVal 参数也可以是从某些 ActiveX(R) 对象返回的 VT_DATE 值。

year
必选项。完整的年份,比如,1976(而不是 76)。

month
必选项。表示的月份,是从 0 到 11 之间的整数( 1 月至 12 月)。

date
必选项。表示日期,是从 1 到 31 之间的整数。

hours
可选项。 如果提供了 minutes 则必须给出。表示小时,是从 0 到 23 的整数(午夜到 11pm)。

minutes
可选项。 如果提供了 seconds 则必须给出。表示分钟,是从 0 到 59 的整数。

seconds
可选项。 如果提供了 milliseconds 则必须给出。表示秒钟,是从 0 到 59 的整数。

ms
可选项。 表示毫秒,是从 0 到 999 的整数。

说明
Date 对象保存以毫秒为单位表示特定时间段。如果某个参数的值大于其范围或为负数,则存储的其他值将做相应的调整。例如,如果指定 150 秒,JScript 将该数字重新定义为 2 分 30 秒。

如果数字为 NaN,则表示该对象不代表特定的时间段。如果未向 Date 对象传递参数,它将被初始化为当前时间 (UTC)。在能够使用该对象前必须为其赋值。

Date 对象能够表示的日期范围约等于 1970 年 1 月 1 日前后各 285,616 年。

Date 对象具有两个不创建 Date 对象就可以调用的静态方法。它们是 parse 和 UTC。

下面的示例演示了 Date 对象的用法。

function DateDemo(){
var d, s = "Today´s date is: "; // 声明变量。
d = new Date(); // 创建 Date 对象。
s += (d.getMonth() + 1) + "/"; // 获取月份。
s += d.getDate() + "/"; // 获取日。
s += d.getYear(); // 获取年份。
return(s); // 返回日期。
}


风信Java论坛 ›› javascript/html/css 讨论交流中心 ›› js 日期时间函数 登录 -> 注册

查看完整版本: [-- js 日期时间函数 --]
CopyRight © 2008-2009 JavaWind.Net Studio All Rights Reserved
Powered By JWind.BBS Vesion 1.0.0 Beta1 Processed in 10 ms,0 (Queries)  Gzip enabled
粤ICP备07511478号