0

次の形式で日のリストを取得しようとしています:1月1日、1月3日..... 1月30日、1月31日。

DateTime.DaysInMonth(2013,01);を呼び出すことで、このコレクションを自分で生成できます。しかし、これは私に「31」を与えるだけなので、それらをループしてコレクションを生成する必要があります。しかし、これを簡単にまたは簡単な方法で行うカスタムメソッドはすでにありますか?

ありがとう

4

4 に答える 4

4

次のコードスニペットを使用してみてください。MMMDateTimeパターンを使用して月の名前を抽出することを検討してください

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
于 2013-02-05T16:57:15.867 に答える
2

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();

デモ

于 2013-02-05T16:59:31.733 に答える
0

上記のIlyaIvanovの回答に基づいて、リストに「Jan ??」の形式を表示したい場合は、次のようにすることができます。

var list = Enumerable.Range(1, DateTime.DaysInMonth(2012, 1)).Select(num => "Jan " + num);
于 2013-02-05T17:12:53.487 に答える
0

これを行うための組み込みのメソッドはないと思いますが、次のようなことを簡単に行うことができます。

DateTime.DaysInMonth(2013, 01).Select(x=> "Jan " + x.Tostring()).ToList();

これを簡単にパラメータ化して独自の関数を作成し、さまざまな月を取得する方法を確認できます。

于 2013-02-05T16:57:29.417 に答える