JS 時間轉化為幾分鍾前 幾小時前 幾天前


背景:最近公司要做動態列表,類似於微信朋友圈。動態創建時間就需要顯示為 剛剛、幾分鍾前、幾小時前、幾天前、2018-05-15,這樣的形式。

 

代碼如下

    var minute = 1000 * 60;
    var hour = minute * 60;
    var day = hour * 24;

    // 計算時間差
    handleDate(minute, hour, day,dateTimeStamp) {
      var result = '';
      var now = new Date().getTime();
      var diffValue = now - dateTimeStamp;
      if (diffValue < 0) {
        console.log("時間不對勁,服務器創建時間與當前時間不同步");
        return result = "剛剛";
      }
      var dayC = diffValue / day;
      var hourC = diffValue / hour;
      var minC = diffValue / minute;
      if (parseInt(dayC) > 30) {
        result = "" + this.$format(dateTimeStamp,"yyyy-MM-dd");
      }else if(parseInt(dayC) > 1) {
        result = "" + parseInt(dayC) + "天前";
      }else if (parseInt(dayC) == 1) {
        result = "昨天";
      } else if (hourC >= 1) {
        result = "" + parseInt(hourC) + "小時前";
      } else if (minC >= 5) {
        result = "" + parseInt(minC) + "分鍾前";
      } else
        result = "剛剛";
      return result;
    },

 

參數 dateTimeStamp 為服務器返回的創建時間 ;

因為服務器並沒有返回當前時間,所以有時候時間會出現小小的偏差,但是沒關系,顯示為剛剛就行了。

 

 * this.$format() 為處理時間的方法;

 1 /**
 2  * 格式化時間
 3  * @param date Date 時間
 4  * @param format 格式化 "yyyy-MM-dd hh:mm:ss www"=format
 5  * @returns {string} 格式化后字符串
 6  */
 7 
 8 export function format(date, format){
 9   if (typeof date == 'string') {
10     if(date.indexOf('T')>=0){
11       date = date.replace('T',' ')
12     }
13     date = new Date(Date.parse(date.replace(/-/g, "/")))
14   }
15   var o = {
16       "M+": date.getMonth() + 1,
17       "d+": date.getDate(),
18       "h+": date.getHours(),
19       "m+": date.getMinutes(),
20       "s+": date.getSeconds(),
21       "q+": Math.floor((date.getMonth() + 3) / 3),
22       "S": date.getMilliseconds()
23   };
24   var w = [
25       ['日', '一', '二', '三', '四', '五', '六'],
26       ['周日', '周一', '周二', '周三', '周四', '周五', '周六'],
27       ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
28   ];
29   if (/(y+)/.test(format)) {
30       format = format.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
31   }
32   if (/(w+)/.test(format)) {
33       format = format.replace(RegExp.$1, w[RegExp.$1.length - 1][date.getDay()]);
34   }
35   for (var k in o) {
36       if (new RegExp("(" + k + ")").test(format)) {
37           format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
38       }
39   }
40   return format;
41 }
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM