【问题标题】:Tryparse does not transform the datetime into date onlyTryparse 不会仅将日期时间转换为日期
【发布时间】: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


【解决方案1】:

你正在做一些返工。

已经dt 作为Datetime。您生成它的 textual(又名字符串)表示,然后再次将其解析为 DateTime。这是不必要的。

如果您想“仅”获取您的日期部分,您可以将dt.Date 作为Datetime 获取。

如果您想从dt 获取“2019 年 1 月 1 日”作为字符串表示形式,您可以做一些工作,因为 .NET Framework 没有用于日期名称后缀的内置函数。但是,Getting day suffix when using DateTime.ToString() 主题也解释了如何做到这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-05
    • 1970-01-01
    • 2014-07-01
    • 1970-01-01
    • 2019-07-07
    相关资源
    最近更新 更多