如何获取当年月份的列表,但该列表应该只有当前月份之前的月份。
就像现在是 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();
除了一月份的结果返回一个空列表(这可能是你想要的)之外,你可以使用:
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。
然后你可以从 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));
}