![](/img/trans.png)
[英]Determine if CurrentCulture's AbbreviatedMonthNames are just numbers or not
[英]DateTimeFormatInfo.AbbreviatedMonthNames order
我有一个表示缩略月份的字符串列表: Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec
如果我以随机顺序获得这些值,如何按上述顺序对其进行排序: Jan, Feb, Mar ...
?
List<string> months = new List<string>();
为什么不使用此有序列表:
List<string> months = Enumerable.Range(1, 12)
.Select(m => DateTimeFormatInfo.InvariantInfo.GetAbbreviatedMonthName(m))
.ToList();
列表包含:
[0] "Jan"
[1] "Feb"
[2] "Mar"
[3] "Apr"
[4] "May"
[5] "Jun"
[6] "Jul"
[7] "Aug"
[8] "Sep"
[9] "Oct"
[11] "Dec"
如果要使用当前语言的月份名称,请使用:
DateTimeFormatInfo.CurrentInfo.GetAbbreviatedMonthName(m)
如果您现在有另一个包含月份名称的列表,并且此列表包含重复项或不完整,但您想自然地订购此列表,则可以使用IndexOf
:
monthList = monthList.OrderBy(s => months.IndexOf(s)).ToList();
这是另一种不需要比较其他列表但使用DateTime.ParseExact
:
monthList = monthList
.OrderBy(s => DateTime.ParseExact(s, "MMM", DateTimeFormatInfo.InvariantInfo))
.ToList();
已经为您量身定做了:)
从DateTimeFormatInfo.MonthNames签出
公共字符串[] MonthNames {get; 组; }
类型为String的一维数组,其中包含月份的区域性特定的全名。 在12个月的日历中,数组的第13个元素是一个空字符串。 InvariantInfo的数组包含“ 1月”,“ 2月”,“ 3月”,“ 4月”,“ 5月”,“ 6月”,“ 7月”,“ 8月”,“ 9月”,“ 10月”,“ 11月”,“十二月”和“”。
编辑:我发现这个问题可能是有用的
您可以使用DateTime.ParseExact
方法来实现此目的
var months = new[] { "Jan", "Apr", "Sep", "Oct", "May", "Jun", "Jul", "Feb", "Mar", "Aug", "Nov", "Dec" };
var sortedMonthNames = months
.Select(m => new {Name = m, Date = DateTime.ParseExact(m, "MMM", CultureInfo.InvariantCulture)})
.OrderBy(m => m.Date.Month)
.Select(m => m.Name)
.ToArray();
您可以订购并重新创建按月份编号排序的列表:
string[] months = {"feb", "oct", "apr", "jan"};
List<string> orderedMonths = months.OrderBy(m => DateTime.Parse("2000" + m + "1")).ToList();
您可以在格式正确的字符串数组和Array.IndexOf()方法的帮助下使用LINQ.OrderBy()方法来比较值:
class Program
{
static readonly string[] format = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
static void Main()
{
string[] sorted = (new[] { "Jul", "Jan", "May" }).OrderBy(v => Array.IndexOf(format, v)).ToArray();
for (int i = 0; i < sorted.Length; i++)
{
Console.WriteLine(sorted[i]);
}
}
}
输出:一月,五月,七月
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.