C# 如何将MM/dd/yyyy转换为yyyy-MM-dd格式ASP.Net

C# 如何将MM/dd/yyyy转换为yyyy-MM-dd格式ASP.Net,c#,asp.net,date,C#,Asp.net,Date,在我的aspx页面中有一个Gridview,它显示来自数据库的名称和日期,还有一些文本框用于搜索数据库中的数据 我的数据库中保存的日期格式是yyyy-MM-dd,但我想在我的Gridview中以MM/dd/yyyy显示它,所以我使用了 SELECT ID, Name, convert(varchar(10), StartDate, 101) as [StartDate] FROM MyDB 让它发生。现在,它不再显示2016-12-13,而是显示在我的gridview上,如下所示:12/13/

在我的aspx页面中有一个Gridview,它显示来自数据库的名称和日期,还有一些文本框用于搜索数据库中的数据

我的数据库中保存的日期格式是yyyy-MM-dd,但我想在我的Gridview中以MM/dd/yyyy显示它,所以我使用了

SELECT ID, Name, convert(varchar(10), StartDate, 101) as [StartDate] FROM MyDB
让它发生。现在,它不再显示2016-12-13,而是显示在我的gridview上,如下所示:12/13/2016

现在我的问题是,当我使用文本框使用日期过滤Gridview时,键入的日期格式应该是yyyy MM dd,以便它显示结果。这就是为什么我考虑将文本框中键入的MM/dd/yyyy转换为yyyy-MM-dd

因此,当我键入12/13/2016时,它将转换为2016-12-13,然后将其添加到我的SQLCommand中

编辑

我忘了提到我转换日期的原因。这是因为即使保存在数据库中的数据仅为日期,它也会在Gridview中显示时间。因此,如果不转换,它看起来是这样的:2016年12月5日12:00:00 AM

2016年12月13日


生成2016-12-13

数据库中的StartDate列是什么类型的?如果从数据库中检索DateTime值并显示它,它将自动调整为当前选定的语言环境。此外,如果您从模型中获得了有效的日期时间,那么在使用实体框架或SqlCommand AddParameter时就不必担心了。所以我建议使用“DateTime”方式,因为每个不同的web本地显示都可能会导致问题。我认为最好获取DateTime,因为它存储在DB中,并且只在显示时转换它。这样,您就可以灵活地进行表示。@PauGacusan读取副本。和如果需要有关gridview列格式的帮助,请发布代码。您是否设置了列的格式字符串?您可以使用一个简短的格式,例如d来指定在最终用户界面中只显示一个日期locale@PauGacusan请也尝试此选项:text=数据库中的StartDate列是什么类型的?如果从数据库中检索DateTime值并显示它,它将自动调整为当前选定的语言环境。此外,如果您从模型中获得了有效的日期时间,那么在使用实体框架或SqlCommand AddParameter时就不必担心了。所以我建议使用“DateTime”方式,因为每个不同的web本地显示都可能会导致问题。我认为最好获取DateTime,因为它存储在DB中,并且只在显示时转换它。这样,您就可以灵活地进行表示。@PauGacusan读取副本。和如果需要有关gridview列格式的帮助,请发布代码。您是否设置了列的格式字符串?您可以使用一个简短的格式,例如d来指定在最终用户界面中只显示一个日期locale@PauGacusan请也试试这个:text=更好,在查询时根本不将日期转换为文本,因此不需要转换。正如OP提到的,StartDate是一个日期字段。GridView列有一个DataFormatString属性,根本不需要转换或解析。@PhillipNgan谢谢您,先生。更好的是,在查询时根本不要将日期转换为文本,这样就不需要转换。正如OP所提到的,StartDate是一个日期字段。GridView列有一个DataFormatString属性,根本不需要转换或解析。@PhillipNgan谢谢您,先生。成功了。
Console.WriteLine(
    DateTime.ParseExact("12/13/2016","d", CultureInfo.InvariantCulture).ToString("yyyy-MM-dd"));