util.js 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383
  1. const formatTime = date => {
  2. const year = date.getFullYear();
  3. const month = date.getMonth() + 1;
  4. const day = date.getDate();
  5. const hour = date.getHours();
  6. const minute = date.getMinutes();
  7. const second = date.getSeconds();
  8. var t1 = [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(
  9. ':');
  10. var t2 = [year, month, day].map(formatNumber).join('-');
  11. var time = {
  12. t1: t1,
  13. t2: t2
  14. };
  15. return time;
  16. };
  17. function formatTimeComm(date, format) {
  18. var formateArr = ['Y', 'M', 'D', 'h', 'm', 's'];
  19. var returnArr = [];
  20. returnArr.push(date.getFullYear());
  21. returnArr.push(formatNumber(date.getMonth() + 1));
  22. returnArr.push(formatNumber(date.getDate()));
  23. returnArr.push(formatNumber(date.getHours()));
  24. returnArr.push(formatNumber(date.getMinutes()));
  25. returnArr.push(formatNumber(date.getSeconds()));
  26. for (var i in returnArr) {
  27. format = format.replace(formateArr[i], returnArr[i]);
  28. }
  29. return format;
  30. }
  31. /**
  32. * 获取上一个月
  33. *
  34. * @date 格式为yyyy-mm-dd的日期,如:2014-01-25
  35. */
  36. const getPreMonth = date => {
  37. var arr = date.split('-');
  38. var year = arr[0]; //获取当前日期的年份
  39. var month = arr[1]; //获取当前日期的月份
  40. var day = arr[2]; //获取当前日期的日
  41. var days = new Date(year, month, 0);
  42. days = days.getDate(); //获取当前日期中月的天数
  43. var year2 = year;
  44. var month2 = parseInt(month) - 1;
  45. if (month2 == 0) {
  46. //如果是1月份,则取上一年的12月份
  47. year2 = parseInt(year2) - 1;
  48. month2 = 12;
  49. }
  50. var day2 = day;
  51. var days2 = new Date(year2, month2, 0);
  52. days2 = days2.getDate();
  53. if (day2 > days2) {
  54. //如果原来日期大于上一月的日期,则取当月的最大日期。比如3月的30日,在2月中没有30
  55. day2 = days2;
  56. }
  57. if (month2 < 10) {
  58. month2 = '0' + month2; //月份填补成2位。
  59. }
  60. var t1 = year + '-' + month;
  61. var t2 = year2 + '-' + month2;
  62. var time = {
  63. t1: t1,
  64. t2: t2
  65. };
  66. return time;
  67. };
  68. const formatNumber = n => {
  69. n = n.toString();
  70. return n[1] ? n : '0' + n;
  71. };
  72. const formatTimes = t => {
  73. let second = t % 60;
  74. let minute = parseInt(t / 60 % 60);
  75. let hour = parseInt(t / 60 / 60);
  76. return formatNumber(hour) + ':' + formatNumber(minute) + ":" + formatNumber(second);
  77. };
  78. const formatDayTimes = t => {
  79. let second = t % 60;
  80. let minute = parseInt(t / 60 % 60);
  81. let hour = parseInt(t / 60 / 60 % 24);
  82. let day = parseInt(t / 60 / 60 / 24);
  83. return formatNumber(day) + '天' + formatNumber(hour) + ':' + formatNumber(minute) + ":" + formatNumber(second);
  84. };
  85. /**
  86. * 判断此对象是否是Object类型
  87. * @param {Object} obj
  88. */
  89. function isObject(obj) {
  90. return Object.prototype.toString.call(obj) === '[object Object]';
  91. }
  92. ;
  93. /**
  94. * 判断此类型是否是Array类型
  95. * @param {Array} arr
  96. */
  97. function isArray(arr) {
  98. return Object.prototype.toString.call(arr) === '[object Array]';
  99. }
  100. ;
  101. /**
  102. * 深度比较两个对象是否相同
  103. * @param {Object} oldData
  104. * @param {Object} newData
  105. */
  106. function equalsObj(oldData, newData) {
  107. // 类型为基本类型时,如果相同,则返回true
  108. if (oldData === newData) return true;
  109. if (isObject(oldData) && isObject(newData) && Object.keys(oldData).length === Object.keys(newData).length) {
  110. // 类型为对象并且元素个数相同
  111. // 遍历所有对象中所有属性,判断元素是否相同
  112. for (const key in oldData) {
  113. if (oldData.hasOwnProperty(key)) {
  114. if (!equalsObj(oldData[key], newData[key])) // 对象中具有不相同属性 返回false
  115. return false;
  116. }
  117. }
  118. } else if (isArray(oldData) && isArray(oldData) && oldData.length === newData.length) {
  119. // 类型为数组并且数组长度相同
  120. for (let i = 0, length = oldData.length; i < length; i++) {
  121. if (!equalsObj(oldData[i], newData[i])) // 如果数组元素中具有不相同元素,返回false
  122. return false;
  123. }
  124. } else {
  125. // 其它类型,均返回false
  126. return false;
  127. } // 走到这里,说明数组或者对象中所有元素都相同,返回true
  128. return true;
  129. }
  130. ; //时间戳转化
  131. function transTime(date) {
  132. var date = new Date(parseInt(date) * 1000);
  133. var year = date.getFullYear();
  134. var month = date.getMonth() + 1;
  135. var day = date.getDate();
  136. var hour = date.getHours();
  137. var minute = date.getMinutes();
  138. var second = date.getSeconds();
  139. return [year, month, day].map(formatNumber).join('-') + ' ' + [hour, minute, second].map(formatNumber).join(':');
  140. }
  141. ; // 节流
  142. function throttle(fn, gapTime) {
  143. if (gapTime == null || gapTime == undefined) {
  144. gapTime = 1500;
  145. }
  146. let _lastTime = null; // 返回新的函数
  147. return function() {
  148. let _nowTime = +new Date();
  149. if (_nowTime - _lastTime > gapTime || !_lastTime) {
  150. fn.apply(this, arguments); //将this和参数传给原函数
  151. _lastTime = _nowTime;
  152. }
  153. };
  154. };
  155. const isMobile = (value) => {
  156. var reg = /^1[3|4|5|6|7|8|9][0-9]{9}$/; //验证规则
  157. var flag = reg.test(value);
  158. if (!flag) {
  159. return false
  160. } else {
  161. return true
  162. }
  163. }
  164. const convertUrlObj = (data) => {
  165. var _result = [];
  166. for (var key in data) {
  167. var value = data[key];
  168. if (value.constructor == Array) {
  169. value.forEach(function(_value) {
  170. _result.push(key + "=" + _value);
  171. });
  172. } else {
  173. _result.push(key + '=' + value);
  174. }
  175. }
  176. return _result.join('&');
  177. }
  178. // 隐藏手机号中间四位
  179. function styleHintText(tel) {
  180. if (tel) {
  181. var reg = /^(\d{3})\d{4}(\d{4})$/;
  182. return tel.replace(reg, "$1****$2");
  183. }
  184. return '';
  185. }
  186. function getDateDiff(dateTimeStamp) {
  187. var minute = 1000 * 60;
  188. var hour = minute * 60;
  189. var day = hour * 24;
  190. var halfamonth = day * 15;
  191. var month = day * 30;
  192. var now = new Date().getTime();
  193. var diffValue = now - dateTimeStamp;
  194. if (diffValue < 0) {
  195. return;
  196. }
  197. var monthC = diffValue / month;
  198. var weekC = diffValue / (7 * day);
  199. var dayC = diffValue / day;
  200. var hourC = diffValue / hour;
  201. var minC = diffValue / minute;
  202. if (monthC >= 1) {
  203. result = "" + parseInt(monthC) + "月前";
  204. } else if (weekC >= 1) {
  205. result = "" + parseInt(weekC) + "周前";
  206. } else if (dayC >= 1) {
  207. result = "" + parseInt(dayC) + "天前";
  208. } else if (hourC >= 1) {
  209. result = "" + parseInt(hourC) + "小时前";
  210. } else if (minC >= 1) {
  211. result = "" + parseInt(minC) + "分钟前";
  212. } else
  213. result = "刚刚";
  214. return result;
  215. }
  216. function formatLocation(longitude, latitude) {
  217. if (typeof longitude === 'string' && typeof latitude === 'string') {
  218. longitude = parseFloat(longitude)
  219. latitude = parseFloat(latitude)
  220. }
  221. longitude = longitude.toFixed(2)
  222. latitude = latitude.toFixed(2)
  223. return {
  224. longitude: longitude.toString().split('.'),
  225. latitude: latitude.toString().split('.')
  226. }
  227. }
  228. function removeHtml(content) {
  229. var temp = content.replace(/<\/?.+?>/g, "");
  230. var result = temp.replace(/ /g, "");
  231. var test = result.replace(/<br>/ig, "");
  232. var text = test.replace(/&nbsp;/ig, "");
  233. return text;
  234. }
  235. function styleDistanceKm(distance) {
  236. var distanceS = '';
  237. var disFloat = parseFloat(distance);
  238. if (disFloat > 1000) {
  239. disFloat = disFloat / 1000;
  240. distanceS = disFloat.toFixed(2) + 'km';
  241. } else {
  242. distanceS = distance + 'm';
  243. }
  244. return distanceS;
  245. }
  246. // 隐藏身份证
  247. function hideCard(content) {
  248. var card = content;
  249. var strcard = card.replace(/^(.{4})(?:\d+)(.{4})$/, "$1******$2");
  250. return strcard;
  251. }
  252. //判断时间是否大于当前时间
  253. function checkDate(date) {
  254. var myDate = new Date();
  255. var now = myDate.valueOf();
  256. var time = new Date(date).valueOf();
  257. if (now > time) {
  258. return false;
  259. } else {
  260. return true;
  261. }
  262. }
  263. /*比较t1 t2*/
  264. function getTimeSpan(str1, str2) {
  265. var data = {
  266. day: 0,
  267. hour: 0,
  268. minutes: 0,
  269. seconds: 0,
  270. isExp: true
  271. };
  272. function cut2(t) {
  273. return t.toString().length > 1 ? t : 0 + "" + t;
  274. }
  275. if (!str1 || !str2) {
  276. data.isExp = false;
  277. return data;
  278. }
  279. var t1 = new Date((str1 * 1));
  280. var t2 = new Date((str2 * 1));
  281. if (t2 >= t1) {
  282. data.isExp = false;
  283. return data;
  284. }
  285. data.isExp = true;
  286. var dateDiff = t1 - t2; //时间差的毫秒数
  287. data.day = Math.floor(dateDiff / (24 * 3600 * 1000)); //计算出相差天数
  288. var leave1 = dateDiff % (24 * 3600 * 1000) //计算天数后剩余的毫秒数
  289. data.hour = cut2(Math.floor(leave1 / (3600 * 1000))) //计算出小时数
  290. //计算相差分钟数
  291. var leave2 = leave1 % (3600 * 1000) //计算小时数后剩余的毫秒数
  292. data.minutes = cut2(Math.floor(leave2 / (60 * 1000))) //计算相差分钟数
  293. //计算相差秒数
  294. var leave3 = leave2 % (60 * 1000);
  295. data.seconds = cut2(Math.round(leave3 / 1000))
  296. return data;
  297. }
  298. function preText(pretext) {
  299. if(pretext){
  300. return pretext.replace(/\r\n/g, '<br/>')
  301. .replace(/\n/g, '<br/>')
  302. // .replace(/\s/g, '&nbsp;')
  303. }else{
  304. return '';
  305. }
  306. }
  307. module.exports = {
  308. formatTime: formatTime,
  309. formatTimes: formatTimes,
  310. formatTimeComm: formatTimeComm,
  311. formatDayTimes: formatDayTimes,
  312. equalsObj: equalsObj,
  313. isObject: isObject,
  314. isArray: isArray,
  315. transTime: transTime,
  316. throttle: throttle,
  317. getPreMonth: getPreMonth,
  318. isMobile: isMobile,
  319. convertUrlObj: convertUrlObj,
  320. getDateDiff: getDateDiff,
  321. styleHintText: styleHintText,
  322. formatLocation: formatLocation,
  323. removeHtml: removeHtml,
  324. styleDistanceKm: styleDistanceKm,
  325. hideCard: hideCard,
  326. checkDate: checkDate,
  327. getTimeSpan: getTimeSpan,
  328. preText: preText
  329. };