2010-12-02 12 views
1

私は開始日と月数を持っています。たとえば月間の特定の番号を作成する必要があります。毎月の期間のリストを取得するには?

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 

この場合、コードは単純で動作します。たstartDateがDateTimeのとき しかし(2010,1,31)結果は次のとおりです。

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 

は、これらの期間は正しいですか?

+0

これを使用している言語でこのタグを付けると役立ちます – Gerrat

答えて

1

期間はファンキーに見えますが、正確です。

月の最後の日に開始する期間は、次の月の2番目から最後の日に終了します。

1

あなたは正しいかどうかを選択することができます。私が意味するものは次のとおりです。 1月15日に期間を開始する場合は、その月の最初の日の14日後に開始しますか、または最後の16日前に開始していますか?

さらに複雑になる可能性があります。 15日が火曜日の場合は、指定された月の第3火曜日の開始日と定義されますか?

デイト・カウント・コンベンション、ビジネス・デー、ローリング・コンベンションなどは、金融商品の価格設定や現金で大きな違いを生むことができるため、金融コミュニティにはこれに関する多くの文献がありますそれに関連するフロー。

関連する問題