次の形式で日のリストを取得しようとしています:1月1日、1月3日..... 1月30日、1月31日。
DateTime.DaysInMonth(2013,01);を呼び出すことで、このコレクションを自分で生成できます。しかし、これは私に「31」を与えるだけなので、それらをループしてコレクションを生成する必要があります。しかし、これを簡単にまたは簡単な方法で行うカスタムメソッドはすでにありますか?
ありがとう
次のコードスニペットを使用してみてください。MMM
DateTimeパターンを使用して月の名前を抽出することを検討してください
Enumerable.Range(1, DateTime.DaysInMonth(2012, 1))
.Select(num => num +" Jan");
戻り値
1 Jan
2 Jan
3 Jan
...
30 Jan
31 Jan
編集: 月の名前を抽出するには、次のコードスニペットを使用できます
var start = new DateTime(2012, 1, 1);
Enumerable.Range(0, DateTime.DaysInMonth(2012, 1))
.Select(days => start.AddDays(days))
.Select(day => day.ToString("d MMM")); // returns the same
Linqを使用できます:
DateTime date = new DateTime(2013, 1, 1);
var cal = System.Globalization.CultureInfo.CurrentCulture.Calendar;
List<String> monthDates = Enumerable.Range(0, cal.GetDaysInMonth(date.Year, date.Month))
.Select(i => date.AddDays(i).ToString("MMM d"))
.ToList();
上記のIlyaIvanovの回答に基づいて、リストに「Jan ??」の形式を表示したい場合は、次のようにすることができます。
var list = Enumerable.Range(1, DateTime.DaysInMonth(2012, 1)).Select(num => "Jan " + num);
これを行うための組み込みのメソッドはないと思いますが、次のようなことを簡単に行うことができます。
DateTime.DaysInMonth(2013, 01).Select(x=> "Jan " + x.Tostring()).ToList();
これを簡単にパラメータ化して独自の関数を作成し、さまざまな月を取得する方法を確認できます。