Summary of common operations on Date types in javascript
/** 3. * Date.isValiDate: Date legality verification 5. * (2) Date.isValiTime: Time legality verification 6. * (3) Date.isValiDateTime: Date and time legality verification 7. * (4) Date.prototype.isLeapYear: determine whether it is a leap year 8. * (5) Date.prototype.format: Date formatting 9. * (6) Date.stringToDate: convert a string to date type 10. * (7) Date.daysBetween: calculate the difference between the days between two dates 11. * (8) Date.prototype.dateAdd: Date calculation, supports positive and negative numbers 12. * (9) Date.prototype.dateDiff: Compare the date difference: Compare the fields of the same period and return the phase difference value of 13. * (10) Date.prototype.toArray: Split the date into an array: According to the array number, it is: year, month, day, hour, minute, and second respectively. * (11) Date.prototype.datePart: Get date data information 15. */ 16. 17. 18./** 19. * Date legality verification: determine whether dataStr meets the date format specified by formatStr20. * Example: 21. * (1) alert(Date.isValiDate('2008-02-29','yyyy-MM-dd'));//true 22. * (2) alert(Date.isValiDate('aaaa-58-29','yyyy-MM-dd'));//false 23. * dateStr: Required, date string 24. * formatStr: Optional, format string, optional formats are: (1)yyyy-MM-dd (default format) or YYYY-MM-DD (2)yyyy/MM/dd or YYYY/MM/DD (3)MM-dd-yyyy or MM-DD-YYYY (4)MM/dd/yyyyy or MM/DD/YYYY 25. */ 26.Date.isValiDate = function(dateStr, formatStr) 27.{ 28. if(!dateStr){ 29. return false; 30. } 31. if(!formatStr){ 32. formatStr = "yyyy-MM-dd";//Default format: yyyy-MM-dd 33. } 34. if(dateStr.length!=formatStr.length){ 35. return false; 36. }else{ 37. if(formatStr=="yyyy-MM-dd"||formatStr=="YYYY-MM-DD"){ 38. var r1=/^((((((((((((((((((((((((((((((((((((((((((((((((((([02468][048])))))/-((((0[13578])|(1[02]))/-(((((0[13578])|(1[02]))/-(((((0-2][0-9])|(3[01])))|(((0[469])|(11))/-((([0-2][0-9])|(30)))|(02/-([0-2][0-2])|(30)))|(02/-([0-2][0-2])|(3[01]))|(((0[469])|(11))/-(((((0-2][0-9])|(30)))|(02/-([0-2][0-2])|(30))|(02/-([0-2][0-2])|(30))|(02/-([0-2][0-2])|(30))|(02/-([0-2][0-2])|(30))|(02/-([0-2][0-2])|(30))|(02/-([0-2][0-2])|(30))|(02/-([0-2][0-2])|(30))|(02/-([0-2][0-2])|(30))|(02/-([0-2][0-2])|(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]))))))$/; 39. return r1.test(dateStr); 40. }else if(formatStr=="yyyy/MM/dd"||formatStr=="YYYY/MM/DD"){ 41. var r2=/^((((((((((((((((((((((((((((((((((((((((((((((((((((([02468][048])))))//((((0[13578])|(1[02]))//((((0-2][0-9])|(3[01])))|(((0[469])|(11))//(((([0-2][0-9])|(30)))|(02//([0-2][0-2])|(30)))|(02//([0-2][0-2])|(3[01]))|(((0[469])|(11))//(((((0-2][0-9])|(30)))|(02//([0-2][0-2])|(30))|(02//([0-2][0-2])|(30))|(02//([0-2][0-2])|(30))|(02//([0-2][0-2])|(30))|(02//([0-2][0-2])|(30))|(02//([0-2][0-2])|(30))|(02//([0-2][0-2])|(30))|(02//([0-2][0-2])|(30))|(02//([0-2][0-2])|(30))|(02//([0-2][0-2])|(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]))))))$/; 42. return r2.test(dateStr); 43. }else if(formatStr=="MM-dd-yyyy"||formatStr=="MM-DD-YYYY"){ 44. 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]))(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])))$/; 45. return r3.test(dateStr); 46. }else if(formatStr=="MM/dd/yyyy"||formatStr=="MM/DD/YYYY"){ 47. 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]))(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])))$/; 48. return r4.test(dateStr); 49. }else{ 50. alert("Date format is incorrect!"); 51. return false; 52. } 53. } 54. return false; 55.} 56. 57. 58./** 59. * Time legality verification: determine whether timeStr meets the time format specified by formatStr60. * Example: 61. * (1) alert(Date.isValiTime('23:59:59','hh:mm:ss'));//true 62. * (2) alert(Date.isValiTime('24-68-89','hh:mm:ss'));//false 63. * timeStr: Required, date string 64. * formatStr: optional, format string, optional formats are: (1)hh:mm:ss(default format) (2)hh-mm-ss (3)hh/mm/ss 65. */ 66.Date.isValiTime = function(timeStr, formatStr) 67.{ 68. if(!timeStr){ 69. return false; 70. } 71. if(!formatStr){ 72. formatStr = "hh:mm:ss";//Default format: hh:mm:ss 73. } 74. if(timeStr.length!=formatStr.length){ 75. return false; 76. }else{ 77. if(formatStr=="hh:mm:ss"){ 78. var r1=/^(([0-1][0-9])|(2[0-3]))/:([0-5][0-9])/:([0-5][0-9])$/; 79. return r1.test(timeStr); 80. }else if(formatStr=="hh-mm-ss"){ 81. var r2=/^(([0-1][0-9])|(2[0-3]))/-([0-5][0-9])/-([0-5][0-9])$/; 82. return r2.test(timeStr); 83. }else if(formatStr=="hh/mm/ss"){ 84. var r3=/^(([0-1][0-9])|(2[0-3]))//([0-5][0-9])//([0-5][0-9])$/; 85. return r3.test(timeStr); 86. }else{ 87. alert("Time format is incorrect!"); 88. return false; 89. } 90. } 91. return false; 92.} 93. 94. 95./** 96. * Date and time legality verification97. * Format: yyyy-MM-dd hh:mm:ss 98. */ 99.Date.isValiDateTime = function(dateTimeStr) 100.{ 101. var dateTimeReg=/^(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((([02468][048])))))|(((02469])|(11))/-((((((((((((((((((((((((((((((([02468][48]))|(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1(((1(((1(((1(((1(((1(((1(((1(((1(((1(((1((1(((1(((1((1((1(((1((1(((1((1((1((1(((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1((1 8][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]))))))))))))))/:([0-5][0-9])/:([0-5][0-9])))?$/ 102. return dateTimeReg.test(dateTimeStr); 103.} 104. 105. 106./** 107. * Judge leap years: The general rule is: one leap year for four years, not one for a hundred years, and another leap year for four hundred years. 108. */ 109.Date.prototype.isLeapYear = function() 110.{ 111. return (this.getYear()%4==0&&((this.getYear()%100!=0)||(this.getYear()%400==0))); 112.} 113. 114. 115./** 116. * Date format: 117. * formatStr: optional, format string, default format: yyyy-MM-dd hh:mm:ss 118. * The following format is agreed: 119. * (1) YYYY/yyy/YY/yy represents year 120. * (2)MM/M month 121. * (3) W/w week 122. * (4) dd/DD/d/D date 123. * (5) hh/HH/h/H time 124. * (6) mm/m minute 125. * (7) ss/SS/s/S seconds 126. * (8) iii milliseconds 127. */ 128.Date.prototype.format = function(formatStr) 129.{ 130. var str = formatStr; 131. if(!formatStr){ 132. str = "yyyy-MM-dd hh:mm:ss";//Default format 133. } 134. var Week = ['day','one','two','three','four','five','six']; 135. 136. str=str.replace(/yyyy|YYYY/,this.getFullYear()); 137. str=str.replace(/yy|YY/,(this.getYear() % 100)>9?(this.getYear() % 100).toString():'0' + (this.getYear() % 100)); 138. 139. str=str.replace(/MM/,this.getMonth()>=9?(parseInt(this.getMonth())+1).toString():'0' + (parseInt(this.getMonth())+1)); 140. str=str.replace(/M/g,(parseInt(this.getMonth())+1)); 141. 142. str=str.replace(/w|W/g,Week[this.getDay()]); 143. 144. str=str.replace(/dd|DD/,this.getDate()>9?this.getDate().toString():'0' + this.getDate()); 145. str=str.replace(/d|D/g,this.getDate()); 146. 147. str=str.replace(/hh|HH/,this.getHours()>9?this.getHours().toString():'0' + this.getHours()); 148. str=str.replace(/h|H/g,this.getHours()); 149. str=str.replace(/mm/,this.getMinutes()>9?this.getMinutes().toString():'0' + this.getMinutes()); 150. str=str.replace(/m/g,this.getMinutes()); 151. 152. str=str.replace(/ss|SS/,this.getSeconds()>9?this.getSeconds().toString():'0' + this.getSeconds()); 153. str=str.replace(/s|S/g,this.getSeconds()); 154. 155. str=str.replace(/iii/g, this.getMilliseconds()<10?'00'+this.getMilliseconds():(this.getMilliseconds()<100?'0'+this.getMilliseconds():this.getMilliseconds())); 156. 157. return str; 158.} 159. 160. 161./** 162. * String to date type: 163. * dateStr: Required, date string, if it cannot be parsed into date type, return null 164. * Format: 165. * (1) yyyy/MM/dd: IE and FF general 166. * (2) MM/dd/yyyy: IE and FF are common 167. * (3) MM-dd-yyyy: IE only 168. * (4) yyyy-MM-dd: non-IE, and the clock is parsed at 8 o'clock 169. */ 170.Date.stringToDate = function(dateStr) 171.{ 172. if(!dateStr){ 173. alert("The string cannot be parsed as a date"); 174. return null; 175. }else{ 176. if(Date.isValiDate(dateStr,"yyyy/MM/dd")||Date.isValiDate(dateStr,"MM/dd/yyyy")){ 177. return new Date(Date.parse(dateStr)); 178. }else{ 179. if((!-[1,])){//IE 180. if(Date.isValiDate(dateStr,"MM-dd-yyyy")){ 181. return new Date(Date.parse(dateStr)); 182. }else{ 183. alert("Stream cannot be parsed as date"); 184. return null; 185. } 186. }else{//Non-IE 187. if(Date.isValiDate(dateStr,"yyyy-MM-dd")){ 188. return new Date(Date.parse(dateStr)); 189. }else{ 190. alert("Stream cannot be parsed as date"); 191. return null; 192. } 193. } 194. } 195. } 196. return null; 197.} 198. 199. 200./** 201. * Calculate the difference in the number of days between two dates: 202. * dateOne: Required, must be an instance of Data type 203. * dateTwo: Required, must be an instance of Data type 204. */ 205.Date.daysBetween = function(dateOne,dateTwo) 206.{ 207. if((dateOne instanceof Date)==false||(dateTwo instanceof Date)==false){ 208. return 0; 209. }else{ 210. return Math.abs(Math.floor((dateOne.getTime()-dateTwo.getTime())/1000/60/60/24)); 211. } 212.} 213. 214. 215./** 216. * Date calculation: Supports negative numbers, which can be added or subtracted, and returns the calculated date 217. * num: Must be selected, must be a number, and positive numbers are period addition, and negative numbers are date subtracted 218. * field: optional, identifying which field is added or subtracted, the fields are shown in the following convention. When this parameter is not available, the default is d 219. * * The following format is agreed: 220. * (1) Y/y year 221. * (2) M month 222. * (3) W/w week 223. * (4) D/d day 224. * (5) H/h hour 225. * (6) m minute 226. * (7) S/s second 227. * (8) Q/q season 228. */ 229.Date.prototype.dateAdd = function(num, field) 230.{ 231. if((!num)||isNaN(num)||parseInt(num)==0){ 232. return this; 233. } 234. if(!field){ 235. field = "d"; 236. } 237. switch(field){ 238. case 'Y': 239. case 'y':return new Date((this.getFullYear()+num), this.getMonth(), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds());break; 240. case 'Q': 241. case 'q':return new Date(this.getFullYear(), (this.getMonth()+num*3), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds());break; 242. case 'M':return new Date(this.getFullYear(), this.getMonth()+num, this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds());break; 243. case 'W':return new Date(Date.parse(this) + ((86400000 * 7) * num));break; 245. case 'D': 246. case 'd':return new Date(Date.parse(this) + (86400000 * num));break; 247. case 'H': 248. case 'h':return new Date(Date.parse(this) + (3600000 * num));break; 249. case 'm':return new Date(Date.parse(this) + (60000 * num));break; 250. case 'S': 251. case 's':return new Date(Date.parse(this) + (1000 * num));break; 252. default: return this; 253. } 254. return this; 255.} 256. 257. 258./** 259. * Comparison date difference: Compare fields with the same period and return the phase difference value 260. * dtEnd: Required, must be an instance of Data type 261. * field: optional, identify which field is compared on. See the following convention. When this parameter is not available, the default is d 262. * The following format is agreed: 263. * (1) Y/y year 264. * (2) M month 265. * (3) W/w week 266. * (4) D/d day 267. * (5) H/h time 268. * (6) m minute 269. * (7) S/s second 270. */ 271.Date.prototype.dateDiff = function(dtEnd, field) 272.{ 273. var dtStart = this; 274. if((dtEnd instanceof Date)==false){ 275. return 0; 276. }else{ 277. if(!field){ 278. field = "d"; 279. } 280. switch(field){ 281. case 'Y': 282. case 'y':return dtEnd.getFullYear() - dtStart.getFullYear();break; 283. case 'M':return (dtEnd.getMonth()+1)+((dtEnd.getFullYear()-dtStart.getFullYear())*12) - (dtStart.getMonth()+1);break; 284. case 'W':return (dtEnd.getMonth()+1);break; 285. case 'W':return (dtEnd.getMonth()+1)+((dtEnd.getFullYear()-dtStart.getFullYear())*12) - (dtStart.getMonth()+1);break; 284. case 'W':return parseInt((dtEnd - dtStart) / (86400000 * 7));break; 286. case 'D': 287. case 'd': return parseInt((dtEnd - dtStart) / 86400000);break; 288. case 'H': 289. case 'h': return parseInt((dtEnd - dtStart) / 3600000);break; 290. case 'm': return parseInt((dtEnd - dtStart) / 60000);break; 291. case 'S': 292. case 'S': 292. case 'm': return parseInt((dtEnd - dtStart) / 60000);break; 291. case 'S': 292. case 'S': 292. case 'm': return parseInt((dtEnd - dtStart) / 60000);break; 291. case 'S': 292. case 'S': 292. case 'm': return parseInt((dtEnd - dtStart) / 60000);break; 291. case 'S': 292. case 'S': 292. case ' 's':return parseInt((dtEnd - dtStart) / 1000);break; 293. default: return 0; 294. } 295. return 0; 296. } 297.} 298. 299. 300./** 301. * Divide date into an array: according to the array number: year, month, day, hour, minute, second, 302. */ 303.Date.prototype.toArray = function() 304.{ 305. var myArray = new Array(); 306. myArray[0] = this.getFullYear(); 307. myArray[1] = this.getMonth(); 308. myArray[2] = this.getDate(); 309. myArray[3] = this.getHours(); 310. myArray[4] = this.getMinutes(); 311. myArray[5] = this.getSeconds(); 312. return myArray; 313.} 314. 315. 316./** 317. * Get date data information: 318. * field: optional, identify which field is used to compare. The fields are shown in the following convention. When this parameter is not available, the default is d 319. * (1) Y/y year 320. * (2) M month 321. * (3) W/w week 322. * (4) D/d day 323. * (5) H/h hour 324. * (6) m minute 325. * (7) S/s second 326. */ 327. Date.prototype.datePart = function(field) 328.{ 329. if(!field){ 330. field = "d"; 331. } 332. var Week = ['day','one','two','three','four','five','six']; 333. switch (field){ 334. case 'Y' : 335. case 'y' :return this.getFullYear();break; 336. case 'M' :return (this.getMonth()+1);break; 337. case 'W' : 338. case 'w' :return Week[this.getDay()];break; 339. case 'D' : 340. case 'd' :return this.getDate();break; 341. case 'H' : 342. case 'h' :return this.getHours();break; 343. case 'm' :return this.getMinutes();break; 344. case 's' :return this.getSeconds();break; 345. default:return this.getDate(); 346. } 347. return this.getDate(); 348.}The above summary of common operations on Date types in JavaScript is all the content I share with you. I hope you can give you a reference and I hope you can support Wulin.com more.