web-dev-qa-db-fra.com

En instant.js, comment obtenez-vous le quart financier actuel?

Existe-t-il un moyen simple/intégré de déterminer le quart financier actuel?

ex:

  • Jan-Mar: 1er
  • APR-JUL: 2e
  • Jul-septembre: 3ème
  • Oct-déc: 4ème
22
Toli

Ceci est maintenant pris en charge au moment:

moment('2014-12-01').utc().quarter() //outputs 4
moment().quarter(); //outputs current quarter ie. 2

Documentation

47
brian2013

Utilisation de la version 2.14.1+ Vous pouvez faire quelque chose comme ce qui suit:

moment().quarter() Retourne le nombre quart actuel: 1, 2, 3, 4.

moment().quarter(moment().quarter()).startOf('quarter');

Retournerait le trimestre en cours avec la date définie sur la date de début du trimestre.

moment().quarter(moment().quarter()).startOf('quarter');

Retournerait le trimestre en cours avec la date définie sur la date de fin de trimestre.

Vous pouvez également définir une fonction qui prend le numéro de trimestre correspondant comme argument (1,2,3,4) et renvoie un objet contenant la date de début et de fin du trimestre.

function getQuarterRange(quarter) {

  const start = moment().quarter(quarter).startOf('quarter');

  const end = moment().quarter(quarter).endOf('quarter');

  return {start, end};
}
15
Andres Zapata

Utilisez ce code simple pour obtenir tout le trimestre basé sur janvier et avril

démo

Code:

 // startMonth should be january or april

  function setQuarter(startMonth) {
    var obj = {};
    if(startMonth=='january'){

        obj.quarter1 = {start:moment().month(0).startOf('month'),end:moment().month(2).endOf('month')}
        obj.quarter2 = {start:moment().month(3).startOf('month'),end:moment().month(5).endOf('month')}
        obj.quarter3 = {start:moment().month(6).startOf('month'),end:moment().month(8).endOf('month')}
        obj.quarter4 = {start:moment().month(9).startOf('month'),end:moment().month(11).endOf('month')}
        console.log(obj);
        return obj;
    }
    else if(startMonth=='april'){

        obj.quarter1 = {start:moment().month(3).startOf('month'),end:moment().month(5).endOf('month')}
        obj.quarter2 = {start:moment().month(6).startOf('month'),end:moment().month(8).endOf('month')}
        obj.quarter3 = {start:moment().month(9).startOf('month'),end:moment().month(11).endOf('month')}
        obj.quarter4 = {start:moment().month(0).startOf('month').add('years',1),end:moment().month(2).endOf('month').add('years',1)}
        console.log(obj);
        return obj;
    }
}

 setQuarter('april');

violon

5
Nishchit Dhanani

Je ne pense pas que ces réponses expliquent comment obtenir le trimestre financier. Ils expliquent comment obtenir le quartier du calendrier.

Je n'ai pas de réponse propre comme c'est ce qui m'a conduit ici. Mais le quartier fiscal est ce qui est vraiment recherché. Et cela est basé sur le mois de début de l'exercice.

Par exemple, si le mois de début de l'entreprise de mon entreprise est février. Ensuite, au moment de la rédaction du 9 janvier 2017, je suis en fait au quatrième trimestre 2016.

Pour accomplir cela, nous avons besoin d'un moyen d'obtenir le quart par rapport à un entier fourni du mois de début.

3
user2985295

Il n'y a rien de construit en ce moment, mais il y a une conversation pour ajouter des jetons de formatage pour les quartiers. https://github.com/timrwood/moment/pull/54

En attendant, vous pouvez utiliser quelque chose comme ce qui suit.

Math.floor(moment().month() / 3) + 1;

Ou, si vous le voulez sur le moment de prototype, faites cela.

moment.fn.quarter = function () {
    return Math.floor(this.month() / 3) + 1;
}
1
timrwood

La formule qui semble fonctionner pour moi est la suivante:

Math.ceil((moment().month() + 1) / 3);

moment (). mois () Rave le format de 0-11 mois afin que nous ayons à ajouter un

THE ACTUAL MONTH = (moment().month() + 1)

nous devons ensuite diviser par 3 car il y a 3 mois dans un quart.

HOW MANY QUARTERS PASSED = (THE ACTUAL MONTH) / 3

et puis nous devons avoir le plafond de cela (rond au trimestre le plus proche)

CEILING(HOW MANY QUARTERS PASSED)

ÉDITER:

La formule officielle (pas encore commitée) est:

~~((this.month()) / 3) + 1;

ce qui signifie Math.floor((this.month()) / 3) + 1;

1
Toli

Le moyen le plus simple de le faire est

Math.floor(moment.month() / 3)

Cela vous donnera l'index de trimestre zéro. c'est-à-dire 0, 1, 2 ou 3.

Ensuite, si vous voulez le numéro littéral du quart, ajoutez-en un.

0
thomallen