2010-12-02 7 views
1

J'ai la date de début et le nombre de mois. Je dois créer un nombre spécifique de périodes mensuelles par exemple:Comment obtenir la liste des périodes mensuelles?

var startingDate = new DateTime(2010,1,15); 
var months = 3; 
for (int i = 0; i < months; i++) 
{ 
Console.WriteLine("{0} from {1} to {2}", i + 1, startingDate.AddMonths(i), 
startingDate.AddMonths(i + 1).AddDays(-1)); 
} 
OUTPUT: 
1 from 2010-1-15 to 2010-2-14 
2 from 2010-2-15 to 2010-3-14 
3 from 2010-3-15 to 2010-4-14 

Dans ce code de cas est simple et fonctionne. Toutefois, lorsque startDate est DateTime (2010,1,31) résultat est:

OUTPUT: 
1 from 2010-1-31 to 2010-2-27 
2 from 2010-2-28 to 2010-3-30 
3 from 2010-3-31 to 2010-4-29 

ces périodes sont-ce pas?

+0

cela aiderait si vous étiqueté ceci avec n'importe quelle langue que vous utilisez – Gerrat

Répondre

1

Les périodes ont l'air géniales mais elles sont correctes.

Si vos périodes commencent le dernier jour du mois, elles se terminent le deuxième au dernier jour du mois suivant.

1

Vous pouvez choisir s'ils ont raison ou tort. Voici ce que je veux dire: Si vous commencez votre période le 15 janvier, commencez-vous 14 jours après le premier jour du mois, ou commencez-vous 16 jours avant la fin du mois?

Cela peut devenir encore plus compliqué. Si le 15 est un mardi, votre période est-elle définie comme commençant le 3ème mardi d'un mois donné? Il y a beaucoup de littérature à ce sujet dans la communauté financière, puisque les conventions de compte de jour, les jours d'affaires, les conventions de roulement, etc. peuvent faire une grande différence dans le prix d'un produit financier, et dans l'argent comptant flux associés à celui-ci.

Questions connexes