Domanda

Ho partenza data e il numero di mesi. Ho bisogno di creare un numero specifico di periodi mensili per esempio:

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

In questo codice caso è semplice e funziona. Tuttavia quando startDate è DateTime (2010,1,31) risultato è:

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

Sono questi periodi sono corretti?

È stato utile?

Soluzione

I periodi fanno look funky, ma sono corrette.

Se i periodi stanno iniziando l'ultimo giorno del mese finiranno sul secondo all'ultimo giorno del mese successivo.

Altri suggerimenti

Si arriva a scegliere se sono giuste o sbagliate. Ecco cosa voglio dire: Se si avvia il periodo sul 15 gennaio, state cominciando 14 giorni dopo il primo giorno del mese, o stai iniziando 16 giorni prima dell'ultimo?

Si può ottenere ancora più difficile. Se il 15 è un Martedì, è il vostro periodo definito come punto di partenza il 3 ° Martedì di un dato mese?

Ci sono un sacco di letteratura su questo nella comunità finanziaria, dal momento che le Convenzioni di conteggio dei giorni, il Days Affari, convenzioni avvolgibili, ecc può fare una grande differenza nel prezzo di un prodotto finanziario, e dei flussi di cassa ad esso associati.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top