{{ year | gengou }}
<div id="app"> <p><input type="number" v-model="year"></p> <p>{{ year | gengou }}</p> </div>
new Vue({ el: '#app', data: { year: 1986 }, filters: { gengou(year) { if (!year || year <= 1868 || year >= 2019) return year let result; const d = new Date(new Date().setFullYear(year)); const w = { '平成': '1989/01/08', '昭和': '1926/12/25', '大正': '1912/07/30', '明治': '1868/01/25' }; const y = d.getFullYear(); let r = d.toLocaleDateString('ja-JP-u-ca-japanese'); r = r.replace(/^.*?(\d{1,2}).+?$/g, '$1'); const getDate = (x, r) => { return x + r } const ua = navigator.userAgent.toLowerCase(); if (!/msie|trident\/7|edge/.test(ua)) { const m = new Date('1868/09/07'); if (d <= m) r -= 3; } if (Number(r) === 1) r = '元'; if (d >= new Date(w['平成'])) { result = getDate('平成', r, d); } else if (d >= new Date(w['昭和'])) { result = getDate('昭和', r, d); } else if (d >= new Date(w['大正'])) { result = getDate('大正', r, d); } else if (d >= new Date(w['明治'])) { result = getDate('明治', r, d); } return result; } } })