Açıklama Yok

DateHelper.js 11KB

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