util.js 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. function formatTime(time) {
  2. if (typeof time !== 'number' || time < 0) {
  3. return time
  4. }
  5. var hour = parseInt(time / 3600)
  6. time = time % 3600
  7. var minute = parseInt(time / 60)
  8. time = time % 60
  9. var second = time
  10. return ([hour, minute, second]).map(function(n) {
  11. n = n.toString()
  12. return n[1] ? n : '0' + n
  13. }).join(':')
  14. }
  15. const hasPermi = (permi) => {
  16. let list = uni.getStorageSync('user').roles;
  17. let has = list.filter(item => item.roleName == permi);
  18. return has.length > 0 ? true : false;
  19. }
  20. function formatLocation(longitude, latitude) {
  21. if (typeof longitude === 'string' && typeof latitude === 'string') {
  22. longitude = parseFloat(longitude)
  23. latitude = parseFloat(latitude)
  24. }
  25. longitude = longitude.toFixed(2)
  26. latitude = latitude.toFixed(2)
  27. return {
  28. longitude: longitude.toString().split('.'),
  29. latitude: latitude.toString().split('.')
  30. }
  31. }
  32. //获取两日期之间日期列表函数
  33. function getdiffdate(stime, etime) {
  34. //初始化日期列表,数组
  35. var diffdate = new Array();
  36. var i = 0;
  37. //开始日期小于等于结束日期,并循环
  38. while (stime <= etime) {
  39. diffdate[i] = stime;
  40. //获取开始日期时间戳
  41. var stime_ts = new Date(stime).getTime();
  42. //增加一天时间戳后的日期
  43. var next_date = stime_ts + (24 * 60 * 60 * 1000);
  44. //拼接年月日,这里的月份会返回(0-11),所以要+1
  45. var next_dates_y = new Date(next_date).getFullYear() + '-';
  46. var next_dates_m = (new Date(next_date).getMonth() + 1 < 10) ? '0' + (new Date(next_date).getMonth() + 1) +
  47. '-' : (new Date(next_date).getMonth() + 1) + '-';
  48. var next_dates_d = (new Date(next_date).getDate() < 10) ? '0' + new Date(next_date).getDate() : new Date(
  49. next_date).getDate();
  50. stime = next_dates_y + next_dates_m + next_dates_d;
  51. //增加数组key
  52. i++;
  53. }
  54. return diffdate;
  55. }
  56. /**
  57. * 计算两个日期之间的天数
  58. * @param dateString1 开始日期 yyyy-MM-dd
  59. * @param dateString2 结束日期 yyyy-MM-dd
  60. * @returns {number} 如果日期相同 返回一天 开始日期大于结束日期,返回0
  61. */
  62. const getDaysBetween = (dateString1, dateString2) => {
  63. let startDate = Date.parse(dateString1);
  64. let endDate = Date.parse(dateString2);
  65. if (startDate > endDate) {
  66. return 0;
  67. }
  68. if (startDate == endDate) {
  69. return 1;
  70. }
  71. let days = (endDate - startDate) / (1 * 24 * 60 * 60 * 1000);
  72. return days;
  73. }
  74. /**
  75. * 乘法函数,用来得到精确的乘法结果
  76. * @param {Object} arg1
  77. * @param {Object} arg2
  78. */
  79. const accMul = (arg1, arg2) => {
  80. var m = 0;
  81. m += deal(arg1);
  82. m += deal(arg2);
  83. var r1 = Number(arg1.toString().replace('.', ''));
  84. var r2 = Number(arg2.toString().replace('.', ''));
  85. return (r1 * r2) / Math.pow(10, m);
  86. }
  87. /**
  88. * 加法函数,用来得到精确的加法结果
  89. * @param {Object} arg1
  90. * @param {Object} arg2
  91. */
  92. const accAdd = (arg1, arg2) => {
  93. var r1 = deal(arg1);
  94. var r2 = deal(arg2);
  95. var m = Math.pow(10, Math.max(r1, r2));
  96. return (arg1 * m + arg2 * m) / m;
  97. }
  98. /**
  99. * 除法函数,用来得到精确的除法结果
  100. * @param {Object} arg1
  101. * @param {Object} arg2
  102. */
  103. const accDiv = (arg1, arg2) => {
  104. var t1 = deal(arg1);
  105. var t2 = deal(arg2);
  106. var r1 = Number(arg1.toString().replace(".", ""))
  107. var r2 = Number(arg2.toString().replace(".", ""))
  108. return (r1 / r2) * Math.pow(10, t2 - t1);
  109. }
  110. /**
  111. * 求小数点后的数据长度
  112. */
  113. const deal = (arg) => {
  114. var t = 0;
  115. try {
  116. t = arg.toString().split('.')[1].length;
  117. } catch (e) {}
  118. return t;
  119. }
  120. /**
  121. * 判断 有效日期不能小于今天
  122. */
  123. const dateCompare = (beginDate, endDate) => {
  124. var beginArrayDate = beginDate.split('-');
  125. var endArrayDate = endDate.split('-')
  126. if (parseInt(endArrayDate[0], 10) > parseInt(beginArrayDate[0], 10)) return true;
  127. if (parseInt(endArrayDate[0], 10) == parseInt(beginArrayDate[0], 10)) {
  128. if (parseInt(endArrayDate[1], 10) > parseInt(beginArrayDate[1], 10)) return true;
  129. else {
  130. if (parseInt(endArrayDate[1], 10) == parseInt(beginArrayDate[1], 10)) {
  131. if (parseInt(endArrayDate[2], 10) >= parseInt(beginArrayDate[2], 10)) return true;
  132. }
  133. }
  134. }
  135. return false;
  136. }
  137. /**
  138. * 获取日期
  139. * day 获取日期
  140. * time 获取时间
  141. */
  142. const getDate = (obj = 'day') => {
  143. const date = new Date();
  144. let year = date.getFullYear();
  145. let month = date.getMonth() + 1;
  146. let day = date.getDate();
  147. let Hours = date.getHours();
  148. let Minutes = date.getMinutes();
  149. month = month > 9 ? month : '0' + month;
  150. day = day > 9 ? day : '0' + day;
  151. Hours = Hours > 9 ? Hours : '0' + Hours;
  152. Minutes = Minutes > 9 ? Minutes : '0' + Minutes;
  153. if (obj == 'day') {
  154. return `${year}-${month}-${day}`;
  155. }
  156. if (obj == 'time') {
  157. return `${year}-${month}-${day}` + ' ' + Hours + ':' + Minutes;
  158. }
  159. }
  160. /**
  161. * 格式化时间
  162. */
  163. const format = (obj) => {
  164. const date = new Date(obj);
  165. let year = date.getFullYear();
  166. let month = date.getMonth() + 1;
  167. let day = date.getDate();
  168. let Hours = date.getHours();
  169. let Minutes = date.getMinutes();
  170. month = month > 9 ? month : '0' + month;
  171. day = day > 9 ? day : '0' + day;
  172. Hours = Hours > 9 ? Hours : '0' + Hours;
  173. Minutes = Minutes > 9 ? Minutes : '0' + Minutes;
  174. return `${year}-${month}-${day}` + ' ' + Hours + ':' + Minutes;
  175. }
  176. module.exports = {
  177. formatTime: formatTime,
  178. formatLocation: formatLocation,
  179. accMul: accMul,
  180. accAdd: accAdd,
  181. accDiv: accDiv,
  182. dateCompare: dateCompare,
  183. getDate: getDate,
  184. getDaysBetween: getDaysBetween,
  185. getdiffdate: getdiffdate,
  186. hasPermi: hasPermi
  187. }