Obtenir le code sortingmessortingel (sortingmestre) dans c #

Je devais obtenir le sortingmestre correspondant (périodes de 3 mois, soit le premier sortingmestre janvier, février et mars) d’une date donnée. En utilisant la structure c # System.DateTime, je n’ai pas réussi à trouver une méthode pour ce que je cherchais. Donc j’ai résolu comme ça:

DateTime sDeathDate = DateTime.Parse("18/09/1970"); int iDeathTrimester = Convert.ToInt32(Math.Round(Convert.ToDouble(sDeathDate.Month) / 3 + 0.25)); 

Si quelqu’un sait un moyen plus facile de le faire, veuillez répondre.

André

En supposant que janvier – mars est le sortingmestre 1, avril – juin est le sortingmestre 2, juillet – septembre est le sortingmestre 3 et oct – déc est le sortingmestre 4, alors vous pouvez utiliser

 int sortingmester = (sDeathDate.Month - 1) / 3 + 1 

C’est la même chose qu’un quart, vous vouliez dire quelque chose de différent?

Math.Ceiling Renvoie le plus petit entier supérieur ou égal au nombre spécifié.

 DateTime sDeathDate = DateTime.Parse("18/11/1970"); int sortingmester = (int)Math.Ceiling(sDeathDate.Month/3.0); 

Notez que le code utilise 3.0 pour effectuer une division en virgule flottante et non une division entière

La bibliothèque de périodes pour .NET inclut la classe Quarter (période de 3 mois):

 // ---------------------------------------------------------------------- public void QuarterOfDateSample() { DateTime moment = new DateTime( 1970, 9, 15 ); Console.WriteLine( "Quarter : {0}", new Quarter( moment ) ); // > Quarter : Q3 1970; 01.07.1970- 30.09.1970| 91.23:59 Console.WriteLine( "Quarter : {0}", new Quarter( 2006, YearQuarter.First ) ); // > Quarter : Q1 2006; 01.01.2006 - 31.03.2006 | 89.23:59 } // QuarterOfDateSample 

Si vous utilisez Math.Round (Double, MidpointRounding), vous pouvez mieux faire le tour sans append 0,25

À plus