現在の年の月のリストを取得する方法。ただし、リストには現在の月の前の月のみを含める必要があります。
今のように、それは2013年の3月であり、リストには2013年1月と2013年2月が含まれている必要があります。4月が始まると、1月、2月、3月が含まれるはずです。
Enumerable.Range(1, DateTime.Today.Month - 1)
.Select(m => new DateTime(DateTime.Today.Year, m, 1))
.ToList();
多分:
var today = DateTime.Today;
var beforeMonths = Enumerable.Range(1, 12)
.Where(i => i < today.Month)
.Select(i => new DateTime(today.Year, i, 1))
.ToList();
空のリストを返す 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"));
これを試して:
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();
これにより、月が表示されます
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();
}
あなたは現在の月を取得します
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));
}