小程序實現微信朋友圈時間顯示效果:
1分鍾前,2分鍾前,···,59分鍾前,1小時前,2小時前,···,23小時前,一天前,2天前,2019-06-21 等等...
相關代碼如下:getTime() { let start = '2019-6-21 22:41:00' let nowTime = new Date()
let oldTime = new Date(start) let diff = Math.floor((nowTime - oldTime)/1000/60) let time = start if(diff <= 59){ time = diff + '分鍾前' }else if(diff <= 60*24-1){ time = Math.floor(diff / 60) + '小時前' }else if(diff <= 60*24*3-1){ time = Math.floor(diff / 60 / 24) + '天前' }else{ time = time.split(" ")[0] } return time }
實際開發過程中,會發現后台返回的數據不可能一直是 yyyy-mm-dd hh:ii:ss 格式的
也可能返回的是時間戳,這個時候會報 time.split 不是一個方法
解決方法:將時間戳或者 yyyy-mm-dd hh:ii:ss 格式 都通過js的Dete對象轉換,代碼如下:
getTime() { let start = '2019-6-21 22:41:00' let nowTime = new Date() let oldTime = new Date(start) let diff = Math.floor((nowTime - oldTime) / 1000 / 60) let time = start if (diff <= 59) { time = diff + '分鍾前' } else if (diff <= 60 * 24 - 1) { time = Math.floor(diff / 60) + '小時前' } else if (diff <= 60 * 24 * 3 - 1) { time = Math.floor(diff / 60 / 24) + '天前' } else { // time = time.split(" ")[0] // startTime格式:yyyy-mm-dd hh:ii:ss time = this.getNowFormatDate(time) } return time } getNowFormatDate(time) { let date = new Date(time); let seperator1 = "-"; let year = date.getFullYear(); let month = date.getMonth() + 1; let strDate = date.getDate(); if (month >= 1 && month <= 9) { month = "0" + month; } if (strDate >= 0 && strDate <= 9) { strDate = "0" + strDate; } let currentdate = year + seperator1 + month + seperator1 + strDate; return currentdate; }
開發中因為不確定后台傳回的是什么樣的格式,因此在剛開始添加全局替換
ios不支持 “yyyy-mm-dd”,那么就替換成 “yyyy/mm/dd”
let reg=new RegExp("-"); if(reg.test(startTime)){ startTime = startTime.replace(/-/g, '/') }