Saltar al contenido

Obtenga el trimestre actual del año con javascript

Este team de redactores ha estado por horas investigando la respuesta a tu búsqueda, te brindamos la respuestas por esto nuestro objetivo es servirte de gran apoyo.

Solución:

Suponiendo que de enero a marzo se consideren Q1 (algunos países/empresas separan su año financiero de su año calendario), el siguiente código debería funcionar:

var today = new Date();
var quarter = Math.floor((today.getMonth() + 3) / 3);

Esto te da:

Month      getMonth()  quarter
---------  ----------  -------
January         0         1
February        1         1
March           2         1
April           3         2
May             4         2
June            5         2
July            6         3
August          7         3
September       8         3
October         9         4
November       10         4
December       11         4

En cuanto a cómo obtener los días restantes del trimestre, básicamente se trata de calcular el primer día del próximo trimestre y calcular la diferencia, algo así como:

var today = new Date();
var quarter = Math.floor((today.getMonth() + 3) / 3);
var nextq;
if (quarter == 4) 
    nextq = new Date (today.getFullYear() + 1, 1, 1);
 else 
    nextq = new Date (today.getFullYear(), quarter * 3, 1);

var millis1 = today.getTime();
var millis2 = nextq.getTime();
var daydiff = (millis2 - millis1) / 1000 / 60 / 60 / 24;

Eso no está probado, pero la teoría es sólida. Básicamente, cree una fecha correspondiente al próximo trimestre, conviértala y hoy en milisegundos desde el inicio de la época, luego la diferencia es la cantidad de milisegundos.

Divida eso por la cantidad de milisegundos en un día y tendrá la diferencia en días.

Eso le da (al menos aproximadamente) el número de días que quedan en el trimestre. Es posible que deba ajustarlo para asegurarse de que todo veces se establecen en el mismo valor (00:00:00) para que la diferencia sea en días exactos.

También puede tener un error de uno, dependiendo de su definición real de “días que quedan en el trimestre”.

Pero debería ser un buen punto de partida.

Dado que no ha proporcionado ningún criterio sobre cómo determinar en qué trimestre “*estamos actualmente”, se puede sugerir un algoritmo que luego debe adaptar a cualquier criterio que necesite. p.ej

// For the US Government fiscal year
// Oct-Dec = 1
// Jan-Mar = 2
// Apr-Jun = 3
// Jul-Sep = 4
function getQuarter(d) 

Como fragmento ejecutable e incluyendo el año:

function getQuarter(d)  new Date();
  var m = Math.floor(d.getMonth() / 3) + 2;
  m -= m > 4 ? 4 : 0;
  var y = d.getFullYear() + (m == 1? 1 : 0);
  return [y,m];


console.log(`The current US fiscal quarter is $getQuarter().join('Q')`);
console.log(`1 July 2018 is $getQuarter(new Date(2018,6,1)).join('Q')`);

A continuación, puede adaptar eso a los distintos trimestres financieros o de calendario, según corresponda. También puedes hacer:

function getQuarter(d) 
  d = d 

Luego usa diferentes q arreglos dependiendo de la definición de trimestre requerida.

Editar

Lo siguiente obtiene los días restantes en un trimestre si comienzan el 1 de enero, abril, julio y octubre. Se prueba en varios navegadores, incluido IE 6 (aunque dado que usa ECMAScript básico, debería funcionar en todas partes):

function daysLeftInQuarter(d)  new Date();
  var qEnd = new Date(d);
  qEnd.setMonth(qEnd.getMonth() + 3 - qEnd.getMonth() % 3, 0);
  return Math.floor((qEnd - d) / 8.64e7);

si la primera solución no funciona, puede ajustarla al rango que le gustaría

var today = new Date();
var month = now.getMonth();
var quarter;
if (month < 4)
  quarter = 1;
else if (month < 7)
  quarter = 2;
else if (month < 10)
  quarter = 3;
else if (month < 13)
  quarter = 4;

Si eres capaz, tienes el poder dejar un ensayo acerca de qué te ha gustado de esta reseña.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *