tools.js 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. import dayjs from 'dayjs';
  2. var friendlyDate=function(timestamp) {
  3. var formats = {
  4. 'year': '%n% 年前',
  5. 'month': '%n% 月前',
  6. 'day': '%n% 天前',
  7. 'hour': '%n% 小时前',
  8. 'minute': '%n% 分钟前',
  9. 'second': '%n% 秒前',
  10. };
  11. var now = Date.now();
  12. var seconds = Math.floor((now - timestamp) / 1000);
  13. var minutes = Math.floor(seconds / 60);
  14. var hours = Math.floor(minutes / 60);
  15. var days = Math.floor(hours / 24);
  16. var months = Math.floor(days / 30);
  17. var years = Math.floor(months / 12);
  18. var diffType = '';
  19. var diffValue = 0;
  20. if (years > 0) {
  21. diffType = 'year';
  22. diffValue = years;
  23. } else {
  24. if (months > 0) {
  25. diffType = 'month';
  26. diffValue = months;
  27. } else {
  28. if (days > 0) {
  29. diffType = 'day';
  30. diffValue = days;
  31. } else {
  32. if (hours > 0) {
  33. diffType = 'hour';
  34. diffValue = hours;
  35. } else {
  36. if (minutes > 0) {
  37. diffType = 'minute';
  38. diffValue = minutes;
  39. } else {
  40. diffType = 'second';
  41. diffValue = seconds === 0 ? (seconds = 1) : seconds;
  42. }
  43. }
  44. }
  45. }
  46. }
  47. return formats[diffType].replace('%n%', diffValue);
  48. }
  49. // /**
  50. // * 格式化时间
  51. // * @param {Object} 时间字符串
  52. // */
  53. export function formatDate(dateStr) {
  54. let formatStr = "";
  55. let formatDate=null;
  56. if(dateStr==null){
  57. return formatStr;
  58. }
  59. let date = dayjs(dateStr,'YYYY-MM-DD HH:mm:ss');
  60. let today = dayjs();
  61. if (date.year() != today.year()) {
  62. formatDate = date.format('YYYY-MM-DD HH:mm');
  63. }
  64. else if (date.month() === today.month()) {
  65. switch (date.date() - today.date()) {
  66. case 0:
  67. formatDate = date.format('今天 HH:mm');
  68. break;
  69. case -1:
  70. formatDate = date.format('昨天 HH:mm');
  71. break;
  72. case 1:
  73. formatDate = date.format('明天 HH:mm');
  74. break;
  75. default:
  76. formatDate = date.format('MM-DD HH:mm');
  77. break;
  78. }
  79. }
  80. else if (date.month() - today.month() === 0 && date.date() === 1) {
  81. formatDate = date.format('明天 HH:mm');
  82. }
  83. else {
  84. formatDate = date.format('MM-DD HH:mm');
  85. }
  86. return formatDate;
  87. }
  88. // /**
  89. // * 格式化时间
  90. // * @param {Object} 时间字符串
  91. // */
  92. var formatHour=function(dateStr) {
  93. let date = dayjs(dateStr,'YYYY-MM-DD HH:mm:ss');
  94. let formatHour = date.format('HH:mm');
  95. return formatHour;
  96. }
  97. // /**
  98. // * 计算时间差值
  99. // * @param {startTime} 开始时间
  100. // * @param {endTime} 结束时间
  101. // * @param {type} 类型
  102. // */
  103. var calculateDiffTime=function(startTime, endTime,type=4) {
  104. // let timeStarts = startTime.getTime(); //开始时间,转换成时间戳
  105. // let timeEnds = endTime.getTime(); //结束时间,转换成时间戳
  106. let timer = endTime - startTime //将时间戳进行相减
  107. let year = parseInt((timer / 1000 / 60 / 60 / 24 / 30 / 12));
  108. let month = parseInt((timer / 1000 / 60 / 60 / 24 / 30));
  109. let day = parseInt((timer / 1000 / 60 / 60 / 24));
  110. let hour = parseInt((timer / 1000 / 60 / 60 % 24));
  111. let minute = parseInt((timer / 1000 / 60 % 60));
  112. let second = parseInt((timer / 1000 % 60));
  113. if(hour>0){
  114. return (hour>10?hour:'0'+hour) + ':' + (minute>10?minute:'0'+minute) + ':' + (second>10?second:'0'+second);
  115. }else if(minute>0){
  116. return (minute>=10?minute:'0'+minute) + ':' + (second>=10?second:'0'+second);
  117. }else if(second>0){
  118. return '00:'+(second>=10?second:'0'+second);
  119. }
  120. // if (type === 1) { // 返回相差年数
  121. // return year + '年'
  122. // } else if (type === 2) { // 返回相差年数月数
  123. // return year + '年' + month + '月'
  124. // } else if (type === 3) { // 返回相差年数月数天数
  125. // return year + '年' + month + '月' + day + '日'
  126. // } else { // 返回相差年数月数天数时分秒
  127. // return year + '年' + month + '月' + day + '日' + hour + '时' + minute + '分' + second + '秒'
  128. // }
  129. }
  130. export function formatSeconds(seconds) {
  131. const hours = Math.floor(seconds / 3600);
  132. const minutes = Math.floor((seconds % 3600) / 60);
  133. const secs = seconds % 60;
  134. if(seconds<60){
  135. return [minutes,secs].map(unit => String(unit).padStart(2, '0')).join(':');
  136. }
  137. else if(seconds>=60 && seconds<3600){
  138. return [minutes, secs].map(unit => String(unit).padStart(2, '0')).join(':');
  139. }else{
  140. return [hours, minutes, secs].map(unit => String(unit).padStart(2, '0')).join(':');
  141. }
  142. };
  143. export function caculateTimeago(dateTimeStamp,type) {
  144. const minute = 1000 * 60; // 把分,时,天,周,半个月,一个月用毫秒表示
  145. const hour = minute * 60;
  146. const day = hour * 24;
  147. const week = day * 7;
  148. const now = new Date().getTime(); // 获取当前时间毫秒
  149. const diffValue = now - dateTimeStamp;// 时间差
  150. let result = '';
  151. if (diffValue < 0) {
  152. return;
  153. }
  154. const minS = diffValue / 1000; // 计算时间差的秒
  155. const minC = diffValue / minute; // 计算时间差的分,时,天,周,月
  156. const hourC = diffValue / hour;
  157. const dayC = diffValue / day;
  158. const weekC = diffValue / week;
  159. if (weekC >= 1 && weekC <= 4) {
  160. result = ` ${parseInt(`${weekC}`, 10)}周前`;
  161. } else if (dayC >= 1 && dayC <= 6) {
  162. result = ` ${parseInt(`${dayC}`, 10)}天前`;
  163. } else if (hourC >= 1 && hourC <= 23) {
  164. result = ` ${parseInt(`${hourC}`, 10)}小时前`;
  165. } else if (minC >= 1 && minC <= 59) {
  166. result = ` ${parseInt(`${minC}`, 10)}分钟前`;
  167. } else if (diffValue >= 0 && diffValue <= minute) {
  168. // result = '刚刚';
  169. const num = parseInt(`${minS}`, 10)
  170. if(num == 0) {
  171. result = '刚刚';
  172. } else {
  173. result = ` ${parseInt(`${minS}`, 10)}秒前`;
  174. }
  175. } else {
  176. if(type==1) {
  177. result = '';
  178. } else {
  179. const datetime = new Date();
  180. datetime.setTime(dateTimeStamp);
  181. const Nyear = datetime.getFullYear();
  182. const Nmonth = datetime.getMonth() + 1 < 10 ? `0${datetime.getMonth() + 1}` : datetime.getMonth() + 1;
  183. const Ndate = datetime.getDate() < 10 ? `0${datetime.getDate()}` : datetime.getDate();
  184. result = `${Nyear}-${Nmonth}-${Ndate}`;
  185. }
  186. }
  187. return result;
  188. }