SOtime.js 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. // time1 1593790157203 TO>>> 刚刚 || 3分钟前 || 1小时前 || 1天前 || 1周前 || 2月前 || 2019年11月11日
  2. // time2 1593790157203 TO>>> 上午12:01 || 昨天 || 星期日 || 2019-11-11
  3. // time3 1593790157203 TO>>> 2019-11-11 12:01
  4. // time4 2019/11/11 || 2019/11/11 12:03 TO>>> 1593790157203
  5. // time5 (1593790157203,1593790157205) (开始与结束时间戳) TO>>> 00:40 || 01:25 || 01:20:11 (时长)
  6. const time1 = (timer) => {
  7. var arrTimestamp = (timer + '').split('');
  8. for (var start = 0; start < 13; start++) {
  9. if (!arrTimestamp[start]) {
  10. arrTimestamp[start] = '0';
  11. }
  12. }
  13. timer = arrTimestamp.join('') * 1;
  14. var minute = 1000 * 60;
  15. var hour = minute * 60;
  16. var day = hour * 24;
  17. var halfamonth = day * 15;
  18. var month = day * 30;
  19. var now = new Date().getTime();
  20. var diffValue = now - timer;
  21. // 如果本地时间反而小于变量时间
  22. if (diffValue < 0) {
  23. return '不久前';
  24. }
  25. // 计算差异时间的量级
  26. var monthC = diffValue / month;
  27. var weekC = diffValue / (7 * day);
  28. var dayC = diffValue / day;
  29. var hourC = diffValue / hour;
  30. var minC = diffValue / minute;
  31. // 数值补0方法
  32. var zero = function(value) {
  33. if (value < 10) {
  34. return '0' + value;
  35. }
  36. return value;
  37. };
  38. // 使用
  39. if (monthC > 12) {
  40. // 超过1年,直接显示年月日
  41. return (function() {
  42. var date = new Date(timer);
  43. return date.getFullYear() + '年' + zero(date.getMonth() + 1) + '月' + zero(date.getDate()) + '日';
  44. })();
  45. } else if (monthC >= 1) {
  46. return parseInt(monthC) + "月前";
  47. } else if (weekC >= 1) {
  48. return parseInt(weekC) + "周前";
  49. } else if (dayC >= 1) {
  50. return parseInt(dayC) + "天前";
  51. } else if (hourC >= 1) {
  52. return parseInt(hourC) + "小时前";
  53. } else if (minC >= 1) {
  54. return parseInt(minC) + "分钟前";
  55. }
  56. return '刚刚';
  57. }
  58. const time2 = (timer) => {
  59. var arrTimestamp = (timer + '').split('');
  60. for (var start = 0; start < 13; start++) {
  61. if (!arrTimestamp[start]) {
  62. arrTimestamp[start] = '0';
  63. }
  64. }
  65. var Etime = arrTimestamp.join('') * 1; //参数时间
  66. var Etimer = new Date(Etime)
  67. var Ntime = new Date().getTime() //现在时间
  68. var Ntimer = new Date()
  69. var Eyear = Etimer.getFullYear(); //取得4位数的年份
  70. var Emonth = Etimer.getMonth() + 1 < 10 ? '0' + (Etimer.getMonth() + 1) : Etimer.getMonth() + 1; //取得日期中的月份,其中0表示1月,11表示12月
  71. var Edate = Etimer.getDate()< 10 ? '0' + Etimer.getDate() : Etimer.getDate(); //返回日期月份中的天数(1到31)
  72. var Eweek = Etimer.getDay() //返回日期月份中的周
  73. var Ehour = Etimer.getHours() < 10 ? '0' + Etimer.getHours() : Etimer.getHours(); //返回日期中的小时数(0到23)
  74. var Eminute = Etimer.getMinutes() < 10 ? '0' + Etimer.getMinutes() : Etimer.getMinutes(); //返回日期中的分钟数(0到59)
  75. var today = new Date(new Date().setHours(0, 0, 0, 0)) / 1000 * 1000 //今天0点时间戳
  76. var yesterday = today - 24 * 60 * 60 * 1000 //昨天0点时间戳
  77. var beforeWeek = today - 7 * 24 * 60 * 60 * 1000 //一周前0点时间戳
  78. // 今天的时间
  79. if (today < Etime) {
  80. if (Ehour < 12) {
  81. return '上午' + Ehour + ':' + Eminute
  82. } else {
  83. return '下午' + Ehour + ':' + Eminute
  84. }
  85. }
  86. // 昨天的时间
  87. if (yesterday < Etime && Etime < today) {
  88. return '昨天'
  89. }
  90. // 一周内的时间
  91. if (beforeWeek < Etime) {
  92. if (Eweek == 0) {
  93. return "星期日"
  94. } else if (Eweek == 1) {
  95. return "星期一"
  96. } else if (Eweek == 2) {
  97. return "星期二"
  98. } else if (Eweek == 3) {
  99. return "星期三"
  100. } else if (Eweek == 4) {
  101. return "星期四"
  102. } else if (Eweek == 5) {
  103. return "星期五"
  104. } else if (Eweek == 6) {
  105. return "星期六"
  106. }
  107. }
  108. // 更早的时间
  109. return Eyear + '-' + Emonth + '-' + Edate
  110. }
  111. const time3 = (timer) => {
  112. var arrTimestamp = (timer + '').split('');
  113. for (var start = 0; start < 13; start++) {
  114. if (!arrTimestamp[start]) {
  115. arrTimestamp[start] = '0';
  116. }
  117. }
  118. var Etime = arrTimestamp.join('') * 1; //参数时间
  119. var Etimer = new Date(Etime)
  120. var Eyear = Etimer.getFullYear(); //取得4位数的年份
  121. var Emonth = Etimer.getMonth() + 1 < 10 ? '0' + (Etimer.getMonth() + 1) : Etimer.getMonth() + 1; //取得日期中的月份,其中0表示1月,11表示12月
  122. var Edate = Etimer.getDate()< 10 ? '0' + Etimer.getDate() : Etimer.getDate(); //返回日期月份中的天数(1到31)
  123. var Ehour = Etimer.getHours() < 10 ? '0' + Etimer.getHours() : Etimer.getHours(); //返回日期中的小时数(0到23)
  124. var Eminute = Etimer.getMinutes() < 10 ? '0' + Etimer.getMinutes() : Etimer.getMinutes(); //返回日期中的分钟数(0到59)
  125. return Eyear + "-" + Emonth + "-" + Edate + " " + Ehour + ":" + Eminute
  126. }
  127. const time4 = (timer) => {
  128. var date = timer.replace(/\//g, '-')
  129. date = timer.replace(/:/g, ':')
  130. var Etimer = new Date(date)
  131. var Etime = Etimer.getTime()
  132. return Etime
  133. }
  134. const time5 = (sTime,eTime) => {
  135. if(sTime.length==13) sTime = (sTime-0)/1000
  136. if(eTime.length==13) eTime = (eTime-0)/1000
  137. var lang = 0
  138. var interval = Math.ceil((eTime-sTime)/1000)
  139. // 一分钟以内
  140. if(interval<60){
  141. if(interval<10){
  142. lang = '0' + interval
  143. }else{
  144. lang = interval
  145. }
  146. return '00:'+lang
  147. }
  148. // 一小时以内
  149. if(60 < interval && interval < 3600){
  150. var langM = Math.floor(interval/60)
  151. var langS = Math.floor(interval-(langM*60))
  152. if(langM<10) langM = '0'+langM
  153. if(langS<10) langS = '0'+langS
  154. return langM+':'+langS
  155. }
  156. // 一小时以上
  157. if(3600 < interval){
  158. var langH = Math.floor(interval/3600)
  159. var langM = Math.floor((interval/60)-(langH*60))
  160. var langS = Math.floor(interval-(langH*3600)-(langM*60))
  161. if(langH<10) langH = '0'+langH
  162. if(langM<10) langM = '0'+langM
  163. if(langS<10) langS = '0'+langS
  164. return langH+':'+langM+':'+langS
  165. }
  166. }
  167. module.exports = {
  168. time1,
  169. time2,
  170. time3,
  171. time4,
  172. time5
  173. }