-3

現在の年の月のリストを取得する方法。ただし、リストには現在の月の前の月のみを含める必要があります。

今のように、それは2013年の3月であり、リストには2013年1月と2013年2月が含まれている必要があります。4月が始まると、1月、2月、3月が含まれるはずです。

4

6 に答える 6

4
Enumerable.Range(1, DateTime.Today.Month - 1)
    .Select(m => new DateTime(DateTime.Today.Year, m, 1))
    .ToList();
于 2013-03-08T14:18:51.633 に答える
3

多分:

var today = DateTime.Today;
var beforeMonths = Enumerable.Range(1, 12)
            .Where(i => i < today.Month)
            .Select(i => new DateTime(today.Year, i, 1))
            .ToList();

デモ

于 2013-03-08T14:18:00.873 に答える
1

空のリストを返す 1 月の結果以外 (これはあなたが望むものかもしれません) を使用できます:

Enumerable.Range(1,DateTime.Today.Month - 1)
          .Select(i => new DateTime(DateTime.Today.Year,i,1));

または、文字列表現を使用する場合

Enumerable.Range(1,DateTime.Today.Month - 1)
          .Select(i => new DateTime(DateTime.Today.Year,i,1)
                           .ToString("MMM yyyy"));
于 2013-03-08T14:19:13.783 に答える
1

これを試して:

 var x = new[]
        {"Jan", "Feb", "Mar", 
         "Apr", "May", "Jun", 
         "Jul", "Aug", "Sep", 
         "Oct", "Nov", "Dec"}.Take
         (DateTime.Today.Month-1);

または、具体的なリストが必要な場合は、

 var x = new[]
        {"Jan", "Feb", "Mar", 
         "Apr", "May", "Jun", 
         "Jul", "Aug", "Sep", 
         "Oct", "Nov", "Dec"}.Take
         (DateTime.Today.Month-1).ToList();
于 2013-03-08T14:26:56.630 に答える
0

これにより、月が表示されます

    static void Main(string[] args)
    {
        var months =
            Enumerable.Range(1, DateTime.Now.Month-1).Select(
                p => new DateTime(DateTime.Now.Year, p, 1));

        foreach(var month in months)
            Console.WriteLine(month.ToString("MMM yyyy"));

        Console.ReadLine();
    }
于 2013-03-08T14:21:38.340 に答える
0

あなたは現在の月を取得します

DateTime.Today.Month;

3 月は 3 です。

次に、0 から DateTime.Today.Month まで月をインクリメントしてループできます。

List<DateTime> months = new List<DateTime>();

for (int i = 0; i < DateTime.Now.Month; ++i)
{
     months.Add(new DateTime(DateTime.Now.Year, i, 1));
}
于 2013-03-08T14:28:50.670 に答える