util.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. var SIGN_REGEXP = /([yMdhsm])(\1*)/g;
  2. var DEFAULT_PATTERN = 'yyyy-MM-dd';
  3. function padding(s, len) {
  4. var len = len - (s + '').length;
  5. for (var i = 0; i < len; i++) { s = '0' + s; }
  6. return s;
  7. };
  8. /**
  9. * @description 格式化金额
  10. * @param number:要格式化的数字
  11. * @param decimals:保留几位小数 默认0位
  12. * @param decPoint:小数点符号 默认.
  13. * @param thousandsSep:千分位符号 默认为,
  14. */
  15. export const formatMoney = (number, decimals = 0, decPoint = '.', thousandsSep = ',') => {
  16. number = (number + '').replace(/[^0-9+-Ee.]/g, '')
  17. let n = !isFinite(+number) ? 0 : +number
  18. let prec = !isFinite(+decimals) ? 0 : Math.abs(decimals)
  19. let sep = (typeof thousandsSep === 'undefined') ? ',' : thousandsSep
  20. let dec = (typeof decPoint === 'undefined') ? '.' : decPoint
  21. let s = ''
  22. let toFixedFix = function (n, prec) {
  23. let k = Math.pow(10, prec)
  24. return '' + Math.ceil(n * k) / k
  25. }
  26. s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.')
  27. let re = /(-?\d+)(\d{3})/
  28. while (re.test(s[0])) {
  29. s[0] = s[0].replace(re, '$1' + sep + '$2')
  30. }
  31. if ((s[1] || '').length < prec) {
  32. s[1] = s[1] || ''
  33. s[1] += new Array(prec - s[1].length + 1).join('0')
  34. }
  35. return s.join(dec)
  36. }
  37. export default {
  38. getQueryStringByName: function (name) {
  39. var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
  40. var r = window.location.search.substr(1).match(reg);
  41. var context = "";
  42. if (r != null)
  43. context = r[2];
  44. reg = null;
  45. r = null;
  46. return context == null || context == "" || context == "undefined" ? "" : context;
  47. },
  48. formatDate: {
  49. format: function (date, pattern) {
  50. pattern = pattern || DEFAULT_PATTERN;
  51. return pattern.replace(SIGN_REGEXP, function ($0) {
  52. switch ($0.charAt(0)) {
  53. case 'y': return padding(date.getFullYear(), $0.length);
  54. case 'M': return padding(date.getMonth() + 1, $0.length);
  55. case 'd': return padding(date.getDate(), $0.length);
  56. case 'w': return date.getDay() + 1;
  57. case 'h': return padding(date.getHours(), $0.length);
  58. case 'm': return padding(date.getMinutes(), $0.length);
  59. case 's': return padding(date.getSeconds(), $0.length);
  60. }
  61. });
  62. },
  63. parse: function (dateString, pattern) {
  64. var matchs1 = pattern.match(SIGN_REGEXP);
  65. var matchs2 = dateString.match(/(\d)+/g);
  66. if (matchs1.length == matchs2.length) {
  67. var _date = new Date(1970, 0, 1);
  68. for (var i = 0; i < matchs1.length; i++) {
  69. var _int = parseInt(matchs2[i]);
  70. var sign = matchs1[i];
  71. switch (sign.charAt(0)) {
  72. case 'y': _date.setFullYear(_int); break;
  73. case 'M': _date.setMonth(_int - 1); break;
  74. case 'd': _date.setDate(_int); break;
  75. case 'h': _date.setHours(_int); break;
  76. case 'm': _date.setMinutes(_int); break;
  77. case 's': _date.setSeconds(_int); break;
  78. }
  79. }
  80. return _date;
  81. }
  82. return null;
  83. },
  84. dateDiff: function(sDate1, sDate2) {
  85. var aDate, oDate1, oDate2, iDays;
  86. sDate1 = sDate1.split(" ")[0];
  87. aDate = sDate1.split("-")
  88. oDate1 = new Date(aDate[1] + '-' + aDate[2] + '-' + aDate[0]);
  89. aDate = sDate2.split("-")
  90. oDate2 = new Date(aDate[1] + '-' + aDate[2] + '-' + aDate[0]);
  91. if((oDate1 - oDate2) < 0){
  92. iDays = "已失效"
  93. } else {
  94. iDays = parseInt(Math.abs(oDate1 - oDate2) / 1000 / 60 / 60 / 24) + "天" //把相差的毫秒数转换为天数
  95. }
  96. return iDays
  97. },
  98. cdTime: function(t1, t2, tg) {
  99. var ms = Date.parse(t1) - Date.parse(t2);
  100. var minutes = 1000 * 60;
  101. var hours = minutes * 60;
  102. var days = hours * 24;
  103. var years = days * 365;
  104. //求出天数
  105. var d = Math.floor(ms / days);
  106. //求出除开天数,剩余的毫秒数
  107. ms %= days;
  108. var h = Math.floor(ms / hours);
  109. ms %= hours;
  110. var m = Math.floor(ms / minutes);
  111. ms %= minutes;
  112. var s = Math.floor(ms / 1000);
  113. //返回所需值并退出函数
  114. switch(tg){
  115. case 'd' : return d;
  116. case 'h' : return h;
  117. case 'm' : return m;
  118. case 's' : return s;
  119. }
  120. }
  121. }
  122. };