将字符串转换为日期没有时间

这条线

System.DateTime.Parse("09/12/2009"); 

将日期(字符串)转换为9/12/2009 12:00:00 AM。 我怎样才能在9/12/2009的表格中找到日期。

经过解释我做了:

 DateTime dt = System.DateTime.Parse(Request.Form["datepicker"]); dt.ToString("dd/mm/yyyy"); /* and this code have time, why???*/ 

你的问题不是解析,而是输出。 看看ToString如何为DateTime工作,或者使用这个例子:

 using System; class Program { static void Main(string[] args) { DateTime dt = DateTime.Parse("09/12/2009"); Console.WriteLine(dt.ToString("dd/MM/yyyy")); } } 

或者在您的语言环境中获取内容:

 Console.WriteLine(dt.ToShortDateString()); 

更新:您对问题的更新意味着您还没有完全理解我的答案,所以我会再添加一些解释。 .NET中没有日期 – 只有DateTime。 如果要在.NET中表示日期,可以通过存储当天开始的午夜时间来完成。 即使您不需要,也必须始终存储时间。 你不能删除它。 重要的一点是,当您向用户显示此DateTime时,只显示日期部分。

解析为DateTime对象的任何内容都将包含日期+时间。 如果没有时间,则假定值为0000hr。

要获取仅限日期的表示forms,您可以将其格式化为字符串。

例如theDate.ToString("dd/MM/yyyy")

请参阅MSDN 日期和时间格式字符串 。

如果要将gridview datetime列转换为仅日期列,请使用以下代码:

 raddgvDaybook.Rows.ToList().ForEach(x => { DateTime dt = DateTime.Parse(x.Cells["Vocdate"].Value.ToString()); string str = string.Format("{0:MM/dd/yyyy}", dt); x.Cells["Vocdate"].Value = str; }); 

如果你将日期时间绑定为dgv中的字符串,我测试了它将起作用的代码。