DateTimeFormatInfo us = new CultureInfo("en-US", false).DateTimeFormat;
DateTimeFormatInfo cc = new CultureInfo(culturepreference, false).DateTimeFormat;
foreach (DataRow row in culturetable.Rows)
{
DateTime dt = DateTime.Parse(row["date"].ToString());
row["date"] = dt.ToString(cc.ShortDatePattern);
} 我使用上面的代码根据文化偏好显示日期。**输出:日期无序...
选择澳大利亚en-AU文化首选项时
1/09/2015
10/09/2015
11/09/2015
19/09/2015
2/09/2015
20/09/2015
24/08/2015
3/09/2015
30/08/2015
31/08/2015
4/09/2015
5/09/2015当美国en-US被选为文化偏好时,我们会得到下面的日期...
8/24/2015
8/30/2015
8/31/2015
9/1/2015
9/10/2015
9/11/2015
9/19/2015
9/2/2015
9/20/2015
9/3/2015
9/4/2015
9/5/2015*显示的日期未按排序方式显示。我需要按顺序显示日期,而不管它在哪种文化偏好中。
发布于 2015-09-22 02:53:02
您可以使用表的默认视图的Sort属性。确保使用DefaultView来访问DataRowView,而不是使用tables行。类似于:
culturetable.DefaultView.Sort = "date ASC";
Console.WriteLine("==== en-AU ====");
DateTimeFormatInfo au = new CultureInfo("en-AU", false).DateTimeFormat;
foreach(DataRowView row in culturetable.DefaultView){
Console.WriteLine(((DateTime)row[0]).ToString(au.ShortDatePattern));
}
Console.WriteLine("==== en-US ====");
DateTimeFormatInfo us = new CultureInfo("en-US", false).DateTimeFormat;
foreach(DataRowView row in culturetable.DefaultView){
Console.WriteLine(((DateTime)row[0]).ToString(us.ShortDatePattern));
}发布于 2015-09-22 04:15:40
在列值从datetime类型转换为string类型后,您将该列作为字符串类型进行排序。这就是为什么你会看到这个问题。然后对隐藏的字符串列进行排序,无论datatime值的本地区域性显示如何,您的数据都将始终正确。
https://stackoverflow.com/questions/32702402
复制相似问题