【发布时间】:2019-09-22 17:10:15
【问题描述】:
我正在尝试将日期从 01/01/2019 02:00:00 转换为 01/01/2019 日期时间对象。但是,字符串被转换为 01/01/2019,但 try parse exact 再次返回第一个选项。
另外,我希望显示日期,但不是 01/01/2019 格式。我想要 2019 年 1 月 1 日
我做错了什么?
这是我的代码。
public DateTime ConvertDate(DateTime dt)
{
var datestring = dt.ToString("MM/dd/yyyy", CultureInfo.InvariantCulture);
DateTime datePostedObj;
DateTime.TryParseExact(datestring,
"MM/dd/yyyy",
null,
DateTimeStyles.None,
out datePostedObj);
return datePostedObj.Date;
}
【问题讨论】:
-
你的意思是
datePostedObj.Date确实包含一个时间组件,对吧? -
恐怕你的问题还不清楚(至少对我来说)——可以发minimal reproducible example吗?格式化部分可能应该是一个单独的问题(在您对其进行研究并尝试自己解决之后 - 因此您可以在新问题中展示该尝试)。老实说,我不清楚你为什么要格式化然后重新解析。为什么不直接使用
dt.Date? -
@XouDo 当我将 dt 传递给方法时,我有一个带时间的日期时间。然后,我将该 dt 设置为字符串,以便仅捕获没有时间的日期。 datePostedObj 有一个日期,但又有时间。所以我想要一个没有时间的 datetime obj。
-
@JonSkeet 感谢您的宝贵时间。好吧,我使用 dt.Date 正如你所说的那样,但除了只有 DATE,我还有日期和时间。如果你明白我在说什么。
-
并非如此。
DateTime始终是一个日期和时间。没有“仅限日期”DateTime值的概念......在午夜只有一个DateTime。如果你想要一个“仅限日期”的值,你需要使用像我的 Noda Time 库这样的东西,它有“日期”、“日期和时间”、“即时”等不同的类型。
标签: c# asp.net asp.net-mvc datetime