自定義一個時間過濾器

最近公司在開發一款app,前端用的是Vue,由於業務需求中須要對後臺傳過來的統一格式的時間(年-月-日 時:分)在不一樣場景下分別用不一樣的格式表示,如:
一、今天/昨天的時間就用「今天/昨天 時:分」表示;
二、一個月內的時間用「月-日 時:分」表示;
三、超過一個月的就直接使用標準時間格式「年-月-日 時:分」表示。
我用Vue的filter建立了一個自定義的過濾器,能夠把後臺傳過來的統一格式的時間過濾成上述的三種格式的時間,具體代碼以下:前端

export default function (time) {
    var date = (typeof time === 'number') ? new Date(time) : new Date((time || '').replace(/-/g, '/'))
    // console.log(date)
    var diff = (((new Date()).getTime() - date.getTime()) / 1000)
    var dayDiff = Math.floor(diff / 86400)

    var isValidDate = Object.prototype.toString.call(date) === '[object Date]' && !isNaN(date.getTime())

    if (!isValidDate) {
        console.error('not a valid date')
        return time
    }

        var today = new Date(date)
        var year = today.getFullYear()
        var month = ('0' + (today.getMonth() + 1)).slice(-2)
        var day = ('0' + today.getDate()).slice(-2)
        var hour = ('0' + today.getHours()).slice(-2)
        var minute = ('0'+today.getMinutes()).slice(-2)


    if (isNaN(dayDiff) || dayDiff < 0 || dayDiff >= 31) {
        return `${year}-${month}-${day} ${hour}:${minute}`
    }

        return dayDiff === 0 && (
            diff < 86400 && '今天' + `${hour}:${minute}`
            ) ||
            dayDiff < 2 && '昨天' + `${hour}:${minute}`||
            dayDiff < 3 && '前天' + `${hour}:${minute}`||
            dayDiff < 31 && `${month}-${day} ${hour}:${minute}`
}

前端新人一個,第一次在這裏發表本身的文章,也有半年都沒有寫過學習筆記文章了。感受表達能力比較欠缺,因此考慮後決定先寫這篇主要是代碼的,工具性的文章,爭取之後多寫一些理解性的文章。新年快樂!app

相關文章
相關標籤/搜索