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

根据上面 Ilya Ivanov 的回答,如果您希望列表显示格式“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 回答