javascript - vue怎么自定義個(gè)時(shí)間過(guò)濾器Vue.filter
問(wèn)題描述
vue怎么自定義個(gè)過(guò)濾器 將時(shí)間戳轉(zhuǎn)換為小于24小時(shí)顯示今天 大于24小時(shí)顯示昨天 大于48小時(shí)顯示年-月-日簡(jiǎn)單的模仿了 白云蒼狗的文章 但是不是起很大的作用
過(guò)濾后的結(jié)果 2013-03-22 02:20
<p id='app'> <input type='text' v-model='a'/><hr /><span> {{daitem |times}}</span> </p>
<script type='text/javascript'>
Vue.filter(’times’,function (item) {var date = (typeof item === ’number’) ? new Date(item) : new Date((item || ’’).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 item} 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 && ’今天’) ||dayDiff < 2 && ’昨天’ + `${hour}:${minute}`||dayDiff < 3 && ’前天’ + `${hour}:${minute}`||dayDiff >3 && `${year}-${month}-${day}` });var vm = new Vue({ el: ’#app’, data: {daitem: ’2013-3-22 2:20’ }, }); </script>
問(wèn)題解答
回答1:應(yīng)該用自定義指令更好。
var Time = { // 獲取當(dāng)前時(shí)間戳 getUnix: function () {var date = new Date();return date.getTime(); }, // 獲取今天0點(diǎn)0分0秒的時(shí)間戳 getTodayUnix: function () {var date = new Date();date.setHours(0);date.setMinutes(0);date.setSeconds(0);date.setMilliseconds(0);return date.getTime(); }, // 獲取今年1月1日0點(diǎn)0分0秒的時(shí)間戳 getYearUnix: function () {var date = new Date();date.setMonth(0);date.setDate(1);date.setHours(0);date.setMinutes(0);date.setSeconds(0);date.setMilliseconds(0);return date.getTime(); }, // 獲取標(biāo)準(zhǔn)年月日 getLastDate: function(time) {var date = new Date(time);var month = date.getMonth() + 1 < 10 ? ’0’ + (date.getMonth() + 1) : date.getMonth() + 1;var day = date.getDate() < 10 ? ’0’ + date.getDate() : date.getDate();return date.getFullYear() + ’-’ + month + '-' + day; }, // 轉(zhuǎn)換時(shí)間 getFormatTime: function(timestamp) {var now = this.getUnix(); //當(dāng)前時(shí)間戳var today = this.getTodayUnix(); //今天0點(diǎn)時(shí)間戳var year = this.getYearUnix(); //今年0點(diǎn)時(shí)間戳var timer = (now - timestamp) / 1000; // 轉(zhuǎn)換為秒級(jí)時(shí)間戳var tip = ’’;if (timer <= 0) { tip = ’剛剛’;} else if (Math.floor(timer/60) <= 0) { tip = ’剛剛’;} else if (timer < 3600) { tip = Math.floor(timer/60) + ’分鐘前’;} else if (timer >= 3600 && (timestamp - today >= 0) ) { tip = Math.floor(timer/3600) + ’小時(shí)前’;} else if (timer/86400 <= 31) { tip = Math.ceil(timer/86400) + ’天前’;} else { tip = this.getLastDate(timestamp);}return tip; }};export default { bind: function (el, binding) {el.innerHTML = Time.getFormatTime(binding.value * 1000);el.__timeout__ = setInterval(function() { el.innerHTML = Time.getFormatTime(binding.value * 1000);}, 60000); }, unbind: function (el) {clearInterval(el.__timeout__);delete el.__timeout__; }}
相關(guān)文章:
1. bootstrp是col-md-12列的,只有col-md-10有內(nèi)容,可以讓沒有內(nèi)容的不占據(jù)位置嗎;2. python - Fiddler+Android模擬器抓取app,json數(shù)據(jù)被加密了,如何解析?3. thinkPHP5中獲取數(shù)據(jù)庫(kù)數(shù)據(jù)后默認(rèn)選中下拉框的值,傳遞到后臺(tái)消失不見。有圖有代碼,希望有人幫忙4. java - 如何用圖畫的方式有效地表示多線程?5. wordpress里,這樣的目錄列表是屬于小工具還是啥?6. MySQL 使用 group by 之后然后 IFNULL(COUNT(*),0) 為什么還是會(huì)獲得 null7. 百度地圖 - Android app中準(zhǔn)備接入地圖sdk,百度VS高德哪個(gè)好一點(diǎn)?8. python 3.4 error: Microsoft Visual C++ 10.0 is required9. 我的怎么不顯示啊,話說(shuō)有沒有QQ群什么的10. 常量在外面不加引號(hào)會(huì)報(bào)錯(cuò)。
