C# 对从当前月份开始的月份名称列表进行排序
可能重复:C# 对从当前月份开始的月份名称列表进行排序,c#,date,sorting,datetime,C#,Date,Sorting,Datetime,可能重复: 我需要创建一个组合框,列出一年中的月份,但需要从 当前月份,然后按月份顺序排列其余月份,例如: 十月 十一月 十二月 一月 二月 三月 等等 数据源是数据库中的月份列表,根据月份编号(即一月=1等)对其进行编号,然后进行操作以给出日期时间 如何用C#对列表进行排序,以便获得所需的顺序 TIA.使用 List List=新列表(); DateTimeFormatInfo dtFI=新的DateTimeFormatInfo(); DateTime currentDate=DateTim
我需要创建一个组合框,列出一年中的月份,但需要从 当前月份,然后按月份顺序排列其余月份,例如: 十月
十一月
十二月
一月
二月
三月
等等 数据源是数据库中的月份列表,根据月份编号(即一月=1等)对其进行编号,然后进行操作以给出日期时间 如何用C#对列表进行排序,以便获得所需的顺序 TIA.使用
List List=新列表();
DateTimeFormatInfo dtFI=新的DateTimeFormatInfo();
DateTime currentDate=DateTime.Now;
DateTime nextyearDate=currentDate.AddYears(1.AddDays(-1);
while(currentDate
这将创建一个新的月份列表,从当前月份开始 LINQ对此的另一种看法:
// month name source, use what you prefer
var monthNames = CultureInfo.CurrentCulture.DateTimeFormat.MonthNames;
var sorted = Enumerable.Range(1, 12).Zip(monthNames, Tuple.Create)
.OrderBy(t => (t.Item1 - DateTime.Today.Month + 12) % 12)
.Select(t => t.Item2)
.ToArray();
您可以使用
List monthNames=DateTimeFormatInfo.CurrentInfo.monthNames.ToList()以C#形式获取月份列表代码>。它会得到一个包含13个元素的列表(末尾是一个空的月名,但您始终可以删除最后一个元素monthNames.RemoveAt(monthNames.Count-1);
要重新排列此列表,您可以使用DateTime.Now.month.ToString(“00”);
获取当前月号索引,并重新构造列表newMonthNames=monthNames.GetRange(index,12-index).AddRange(monthNames.GetRange(0,index);
有很多方法可以做到这一点,就像其他方法一样。?
List<string> list = new List<string>();
DateTimeFormatInfo dtFI = new DateTimeFormatInfo();
DateTime currentDate = DateTime.Now;
DateTime nextyearDate = currentDate.AddYears(1).AddDays(-1);
while (currentDate < nextyearDate)
{
list.Add(dtFI.GetMonthName(currentDate.Month));
currentDate = currentDate.AddMonths(1);
}
// month name source, use what you prefer
var monthNames = CultureInfo.CurrentCulture.DateTimeFormat.MonthNames;
var sorted = Enumerable.Range(1, 12).Zip(monthNames, Tuple.Create)
.OrderBy(t => (t.Item1 - DateTime.Today.Month + 12) % 12)
.Select(t => t.Item2)
.ToArray();