【问题标题】:DateTime.TryParseExact not parsing [closed]DateTime.TryParseExact 不解析 [关闭]
【发布时间】:2017-07-25 17:08:33
【问题描述】:

我有一个日期时间字符串,并试图将其解析为 DateTime 对象,但目前它无法正常工作。我的两个 DateTime 对象从未设置过它们的值。我敢肯定这是我没有看到的非常简单的事情。有没有人看到这段代码有任何明显错误?

string Issued = "Tue 25 Jul 2017 16:47:38";
string Expires = "Tue 25 Jul 2017 18:47:38";

string format = "ddd dd MMM yyyy HH:mm:ss";
DateTime dIssued;
DateTime dExpires;
DateTime.TryParseExact(Issued, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out dIssued);
DateTime.TryParseExact(Expires, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out dExpires);

【问题讨论】:

  • 您如何确定DateTimes 的值?我看到它起作用了:dotnetfiddle.net/s9JVz7
  • 您的IssuedExpired 字符串来自哪里?里面会不会有不可打印的字符?看起来像但不是空间的东西?
  • 我运行了这个程序,看起来运行正常?
  • @MikeMcCaughan 感谢您确认我没有疯! :) 肯定有其他问题。
  • @krillgar 你可能会遇到一些问题,这些值来自 api 调用,它们可能不是真正的空格字符

标签: c# parsing datetime


【解决方案1】:

我运行了您的代码,它似乎工作正常。因此,我假设您为了示例而对这些字符串进行硬编码。考虑在代码中填充这两个值的位置放置一个 break 语句并检查它们以查看它们的内容。任何多余的空格或字符都会引发错误。

也可以在您的字符串上尝试.trim();。这基本上删除了字符串开头和结尾的所有空格,因此它将像这样转换我的字符串:

" cat " -> "cat"

【讨论】:

  • Ahhhh.. 原来如此。我在调试器中没有注意到一个额外的空格字符。谢谢!
  • @mituw16 调试非常有用。没有它,很难正确编程。
  • 我完全同意。过去 45 分钟我一直盯着调试器中的值,完全错过了字符串中的额外空间。需要第二双眼睛:)
  • @mituw16 是的,没问题。从现在开始,您可能会养成(像我一样)在分析抛出错误的字符串时仔细检查的习惯。
猜你喜欢
  • 1970-01-01
  • 2010-10-21
  • 1970-01-01
  • 2010-11-05
  • 2010-09-10
  • 2013-01-25
  • 2016-03-23
  • 2018-08-29
  • 2010-09-19
相关资源
最近更新 更多