I do not understand why it can not be in pure javascript. After all, Vue.JS is also in pure javascript, just use the code in the framework.
You can create an array with the name of the months and get the correct name using the result of Date.getMonth()
as index.
function formatDate(date) {
let dia = date.getDate()
let mes = [
'janeiro', 'fevereiro', 'março', 'abril',
'maio', 'junho', 'julho', 'agosto', 'setembro',
'outubro', 'novembro', 'dezembro'
][date.getMonth()]
let ano = date.getFullYear()
return '${dia} de ${mes} de ${ano}'
}
let hoje = new Date()
console.log(formatDate(hoje))
If browser compatibility is not an issue, you can use the Date.toLocaleDateString()
and set it to output the one you want:
let hoje = new Date()
let data_formatada = hoje.toLocaleDateString('pt-BR', {
day: 'numeric',
month: 'long',
year: 'numeric'
})
console.log(data_formatada)
You can use the logic above in Vue as you see fit.
function formatDate(date) {
let dia = date.getDate()
let mes = [
'janeiro', 'fevereiro', 'março', 'abril',
'maio', 'junho', 'julho', 'agosto', 'setembro',
'outubro', 'novembro', 'dezembro'
][date.getMonth()]
let ano = date.getFullYear()
return '${dia} de ${mes} de ${ano}'
}
let formatter = new Intl.DateTimeFormat('pt-BR', {
day: 'numeric',
month: 'long',
year: 'numeric'
})
new Vue({
el: '#app',
data:{
hoje: new Date()
},
filters: {
date: formatDate,
date_2: formatter.format
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script><divid="app">
{{ hoje | date }} <br>
{{ hoje | date_2 }}
</div>