JSFiddle - React, Tailwind, and code Playground
HTML
Comparação <b>fev14 > jan15</b> -
<b>Resultado</b>: <span id="comparacao1"></span>
<b>Esperado</b>: false;
<br>
<br>
Comparação <b>fev14 == fev2014</b> -
<b>Resultado</b>: <span id="comparacao2"></span>
<b>Esperado</b>: true;
JavaScript
Competencia = function(competencia){
var date = this.dateFromCompetencia(competencia);
Object.defineProperty(this, 'date', {
value: date
});
};
Competencia.prototype.toString = function () {
return this.formatado;
};
Competencia.prototype.valueOf = function () {
return this.date.getTime();
};
Object.defineProperties(Competencia.prototype, {
formatado: {
get: function(){
return this.competencia.replace(/^(\d{2})(\d{4})$/,"$1/$2");
}
},
competencia: {
get: function(){
return this.mes + this.ano;
}
},
mes: {
get: function(){
return mes = str_pad(String(this.date.getMonth()+1), 2, '0', 'STR_PAD_LEFT');
}
},
ano: {
get: function(){
return ano = String(this.date.getFullYear());
}
},
proxima:{
value: function(){
var mes = str_pad(String(Number(this.mes)+1), 2, '0', 'STR_PAD_LEFT');
var comp= mes + this.ano;
console.log(comp);
return new Competencia(comp);
}
},
dateFromCompetencia: {
value: function (competencia) {
competencia = String(competencia).replace(/\D/g, '');;
var mes = competencia.substr(-6,2);
var ano = competencia.substr(-4);
if(!checkdate(mes, 01, ano))
throw new Error('Competencia incorreta');
return new Date(ano, Number(mes)-1);
}
}
});
// função str_pad e checkdate do site phpjs.org
function str_pad(e,t,n,r){var i="",s;var o=function(e,t){var n="",r;while(n.length<t){n+=e}n=n.substr(0,t);return n};e+="";n=n!==undefined?n:"...