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