首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按顺序显示日期,而不考虑日期所处的区域性首选项

按顺序显示日期,而不考虑日期所处的区域性首选项
EN

Stack Overflow用户
提问于 2015-09-22 02:41:15
回答 2查看 132关注 0票数 0
代码语言:javascript
复制
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文化首选项时

代码语言:javascript
复制
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被选为文化偏好时,我们会得到下面的日期...

代码语言:javascript
复制
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

*显示的日期未按排序方式显示。我需要按顺序显示日期,而不管它在哪种文化偏好中。

EN

回答 2

Stack Overflow用户

发布于 2015-09-22 02:53:02

您可以使用表的默认视图的Sort属性。确保使用DefaultView来访问DataRowView,而不是使用tables行。类似于:

代码语言:javascript
复制
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));
}

Here is a fiddle

票数 0
EN

Stack Overflow用户

发布于 2015-09-22 04:15:40

在列值从datetime类型转换为string类型后,您将该列作为字符串类型进行排序。这就是为什么你会看到这个问题。然后对隐藏的字符串列进行排序,无论datatime值的本地区域性显示如何,您的数据都将始终正确。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32702402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档