function getWeek(){
let añoAct, diaSemAct, mesAct, diaIni, msIni, msAct;
let dias, diaSemini, semana;
añoAct = this.getFullYear();
diaIni = new Date(añoAct + '/1/1'); //primer día del año
diaSemini = diaIni.getDay();
diaSemini = diaSemini == 0 ? 7:diaSemini;
//Dia semana Domingo 7
//La fecha está entre un viernes 1 y un domingo 3 de Enero
// calculamos la última semana del año anterior
diaSemAct = this.getDay();
diaSemAct = diaSemAct == 0?7:diaSemAct;
mesAct = this.getMonth()
if( mesAct == 0 && (diaSemAct - this.getDate()) >3 ){
let añoAnt = new Date((añoAct-1)+"/12/31");
semana = añoAnt.getWeek();
}
else{
//La fecha está entre un lunes y un miércoles de Diciembre
//Calculamos la primera semana del año siguiente, que es 1
if (mesAct == 11 && (this.getDate() - this.getDay() > 28)){
semana = 1;
}
else{
msIni = diaIni.getTime();
msAct = this.getTime();
//1 día son 86.400.000ms
dias = Math.ceil((msAct - msIni)/(1000*86400));
if(diaSemini <= 4){
dias = dias + diaSemini;
}
else{
dias = dias - ( 7 - diaSemini);
}
semana = Math.ceil((dias)/ 7);
}
}
return semana;
}