【问题标题】:Remove Time from datetime field in dataset从数据集中的日期时间字段中删除时间
【发布时间】:2018-05-08 10:11:51
【问题描述】:

堆栈中有相同的问题,但没有答案。我有一个数据集ds.Tables[0].Rows[0].Field<DateTime>("Date"))

我需要从该字段中删除时间。谁能告诉我怎么做???我尝试了以下方法,但没有成功

Convert.ToDateTime(ds.Tables[0].Rows[0].Field<DateTime>("Date")).ToString("MM/dd/yyyy");

【问题讨论】:

  • 使用 DateTime 的 Date 属性:ds.Tables[0].Rows[0] = ds.Tables[0].Rows[0].Field("Date").Date
  • 在c#中,没有Date数据类型,只有DateTime。此外,Field&lt;DateTime&gt; 返回一个DateTime,所以Convert.ToDateTime 什么也不做。没用是什么意思?
  • .Date 属性返回没有时间组件的 DateTime。你不需要任何其他东西,尤其是美国特定的字符串操作,保证会中断
  • 你在哪里使用这个日期?几乎所有控件都允许格式化。您应该为您的控件、MVC 助手或数据绑定表达式指定短日期格式

标签: c# asp.net datetime


【解决方案1】:

DateTime 总是有日期和时间部分。它只是有一个没有任何格式的值。所以你把它和它的表示混淆了,例如如果你打电话给dt.ToString()

您无需将其转换为string,即可实现与上面相同的操作,应用仅显示日期的格式,最后将结果转换回DateTime。你只需要使用它的Date property

DateTime yourDateTime = ds.Tables[0].Rows[0].Field<DateTime>("Date");
DateTime onlyDate = yourDateTime.Date;

但是,如上所述,这不会删除小时、分钟和秒,它们现在只是零。因此,您必须使用以下之一:

  1. string onlyDateDisplayed = yourDateTime.ToString("d");
  2. string onlyDateDisplayed = yourDateTime.ToString("MM/dd/yyyy");
  3. string onlyDateDisplayed = yourDateTime.ToShortDateString();

【讨论】:

  • 最好设置用于显示此值的任何控件的格式属性
  • @PanagiotisKanavos:OP 没有说他正在使用任何具有格式属性的控件
  • 在 Web 应用程序中使用仅限美国的格式是自找麻烦。可以猜到接下来的两个 SO 问题是什么——为什么 Javascript 不起作用以及为什么某些客户的月份会倒转
  • @PanagiotisKanavos 我不会因为我不知道的事情而责怪 op。除此之外。上述所有这三种方法都将使用当前的文化日期格式而不是美国。即使是第二个也将使用本地化的日期分隔符,并且只指定年、月和日期的顺序。原因是/是一个特殊的格式说明符
  • 我不明白你的评论。是的,这不会使用 / 作为日期分隔符,而是使用当前的文化日期分隔符(对我来说,它将显示例如 11.24.2017 而不是 11/24/2017)。
猜你喜欢
  • 1970-01-01
  • 2016-06-14
  • 2018-03-24
  • 1970-01-01
  • 1970-01-01
  • 2021-10-05
  • 2015-01-03
  • 2012-11-23
  • 1970-01-01
相关资源
最近更新 更多