使用三元表达式实现(时,分,秒)前的时间差计算

最近发现三元表达式超级好用,之前咱们用的最多可能就是: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

相关文章
相关标签/搜索