dateoperation.js 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /*
  2. * 日期操作
  3. */
  4. var DateOperation={
  5. /**
  6. * 日期相减 dtEnd-dtStart
  7. * @param {*} dtStart
  8. * @param {*} dtEnd
  9. * @param {*} datePart 返回差值部分:y-年,M-月,d-日,H-日,m-分,s-秒
  10. */
  11. subtraction:function(dtStart, dtEnd, datePart){
  12. var formatDtStart = new Date(Date.parse(dtStart.replace(/-/g, "/")));
  13. var formatDtEnd = new Date(Date.parse(dtEnd.replace(/-/g, "/")));
  14. if (datePart == "y")
  15. return parseInt((formatDtEnd-formatDtStart)/ (1000 * 60 * 60 * 24 * 365));
  16. if (datePart == "M")
  17. return parseInt((formatDtEnd-formatDtStart)/ (1000 * 60 * 60 * 24 * 30));
  18. if (datePart == "d")
  19. return parseInt((formatDtEnd-formatDtStart)/ (1000 * 60 * 60 * 24));
  20. if (datePart == "H")
  21. return parseInt((formatDtEnd-formatDtStart)/ (1000 * 60 * 60));
  22. if (datePart == "m")
  23. return parseInt((formatDtEnd-formatDtStart)/ (1000 * 60));
  24. if (datePart == "s")
  25. return parseInt((formatDtEnd-formatDtStart)/ (1000));
  26. return 0;
  27. },
  28. /**
  29. * 日期格式化,如YYYY-mm-dd HH:MM表示2019-06-06 19:45
  30. * @param {*} date
  31. * @param {*} fmt
  32. */
  33. formatDate(date,fmt) {
  34. let ret;
  35. const opt = {
  36. "Y+": date.getFullYear().toString(), // 年
  37. "m+": (date.getMonth() + 1).toString(), // 月
  38. "d+": date.getDate().toString(), // 日
  39. "H+": date.getHours().toString(), // 时
  40. "M+": date.getMinutes().toString(), // 分
  41. "S+": date.getSeconds().toString() // 秒
  42. // 有其他格式化字符需求可以继续添加,必须转化成字符串
  43. };
  44. for (let k in opt) {
  45. ret = new RegExp("(" + k + ")").exec(fmt);
  46. if (ret) {
  47. fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : DateOperation.myPadStart(opt[k], ret[1].length, "0"))
  48. };
  49. };
  50. return fmt;
  51. },
  52. myPadStart(str, targetLength, padString) {
  53. targetLength = targetLength >> 0; //floor if number or convert non-number to 0;
  54. padString = String(typeof padString !== 'undefined' ? padString : ' ');
  55. if (str.length > targetLength) {
  56. return String(str);
  57. } else {
  58. targetLength = targetLength - str.length;
  59. if (targetLength > padString.length) {
  60. padString += padString.repeat(targetLength / padString.length); //append to original to ensure we are longer than needed
  61. }
  62. return padString.slice(0, targetLength) + String(str);
  63. }
  64. }
  65. }