如何在C#中将DateTime转换为shortdatetime?

时间:2010-05-08 17:19:52

标签: c# asp.net

我的数据表中有一个DateTime Type的列。我只想要DatePart,因此当我使用ToShortDateTimeString时,它会转换为短日期但字符串类型。因此,当我将字符串重新分配给数据表的列时,它再次将12:00附加到它。我无法更改数据表中的列类型。有没有办法直接将DateTime转换为ShortDateTime而不转换为字符串?????

3 个答案:

答案 0 :(得分:3)

不,那是不可能的。将其格式化为字符串也无济于事。

数据库中的datetime类型始终具有日期和时间组件。如果您未指定时间组件,则它将变为00:00:00(或12小时格式的12:00:00 AM)。所以,无论你做什么来试图删除时间组件,它仍然会有一个。

请注意,数据库中的datetime值没有格式。它只是表示某个时间点的值。

因此,无论何时从数据库中读取数据,都必须处理数据。如果您只是使用默认设置将日期值格式化为字符串,您将获得日期和时间组件,因为它们始终存在。在将DateTime值转换为要显示的字符串时,必须指定所需的格式。例如:

string formatted = theDateTimeValue.ToString("yyyy-MM-dd");

答案 1 :(得分:3)

如果处理DataGrids或GridViews,则使用日期列格式使用{0:d}或简单D.如果您在Web上并使用带有table,tr和td的itemplate并使用绑定模板,例如<%#Eval ()%>然后你尝试以下

<span><%#string.Format("{0:d}",Eval("DataTableFieldName"))%></span>

答案 2 :(得分:2)

您可以使用.Date property,如下所示:

DateTime.Now.Date //just the date portion, like DateTime.Today would give

如果您想在显示屏上进行格式化,例如在GridView中,您可以使用the DataFormatString property将格式添加到列中,如下所示:

<asp:BoundField DataField="ColumnName" DataFormatString="{0:yyyy-MM-dd}" HtmlEncode="false" />