如果日期字符串与格式字符串匹配,则DateTime.TryParseExact返回true

时间:2018-01-12 11:40:58

标签: c# datetime

运行单元测试时遇到问题,以确保在传入无效的日期时间格式sting时来自api的正确响应。当传入日期字符串为" 0711"格式" 0711",api没有返回错误,而是将此日期设置为今天。

使用下面的示例 - DateTime.TryParseExact()返回true,将日期设置为今天。

DateTime.TryParseExact("1019", "1019", null, System.Globalization.DateTimeStyles.AssumeLocal, out result)

DateTime.TryParseExact("1a111", "1a111", null, System.Globalization.DateTimeStyles.AssumeLocal, out result)

如果字符串不匹配 例如

DateTime.TryParseExact("1019", "1018", null, System.Globalization.DateTimeStyles.AssumeLocal, out result)

这正确地返回false。

这是预期的行为吗?如果是这样,canyone可以解释内部运作吗? 除了检查字符串是否相互匹配之外,还有什么可靠的减轻方法?

1 个答案:

答案 0 :(得分:1)

  

这是预期的行为吗?

  

如果是这样,任何人都可以解释内部运作吗?

您输入的数字只是作为文字读取,它们匹配。您的解析字符串中没有HHmm或类似的标识符,因此没有要解析的实际日期。它默认为DateTime.Now

  

除了检查字符串是否相互匹配之外,还有什么可靠的方法来缓解这种情况?

使用实际的日期时间格式字符串,例如HHmm