使用三元表達式實現(時,分,秒)前的時間差計算

最近發現三元表達式超級好用,之前咱們用的最多可能就是:es6

const apple = isApple ? buyApple : ''

這種代碼,可是其實咱們能夠用更加簡便的方式實現
const apple = isApple && buyApple 若是isApple爲true則執行buyApple。app

而咱們經常使用的
const options = options || default 則是options爲true則後面的default再也不執行。
好了懂得上面的原理,咱們來實現一個例子:評論不少時候有個日期,可是不少都不是顯示實際日期,而是顯示1天前,1分鐘前,1小時前之類的,咱們運用上面的三元表達式來實現:code

const getTimeString = timeNum => {
        const timeString = timeNum instanceof Date ? timeNum : new Date(timeNum)
    const second = 1000
    const minute = 1000 * 60
    const hour = minute * 60
    const day = hour * 24
    const time_now =  new Date().getTime()
    const time_difference = time_now - timeString
    const that_time = timeString.getFullYear() + '-'
                    + parseInt(timeString.getMonth()+1) + '-' 
                    + timeString.getDate()+ ' ' 
                    + timeString.getHours() + ':' 
                    + (timeString.getMinutes()<10 ? 
                        '0'+timeString.getMinutes() : 
                        timeString.getMinutes())
    return Math.floor((time_difference/day) && that_time)
    || (Math.floor(time_difference/hour) && Math.floor(time_difference/hour)+'小時前')
    || (Math.floor(time_difference/minute) && Math.floor(time_difference/minute)+'分前')
    || (Math.floor(time_difference/second) && Math.floor(time_difference/second)+'秒前')
}

調用方法也很簡單:對象

getTimeString(new Date('2017-9-12 15:23:10'))

上面運用了es6的語法,不熟悉的,能夠看看es6的教程
由於事先不知道傳過來是不是日期對象,因此咱們須要判斷一下教程

const timeString = timeNum instanceof Date || new Date(timeNum)

若是評論過了1天,按照天,周,月來看時間,我以爲比較累,因此大於24小時的,都用回原來的時間,我以爲這樣能夠增長用戶體驗。
若是你有更加簡便的代碼,歡迎留言。get

相關文章
相關標籤/搜索