为什么 DateTime.ParseExact 在解析字符串时会抛出异常?

问题描述 投票:0回答:1

此代码片段生成异常

string t = @"11\10\2023"; 
string _fmt = @"MM\dd\yyyy"; 
DateTime l = DateTime.ParseExact(t, _fmt, CultureInfo.InvariantCulture);

例外是:

System.FormatException
  HResult=0x80131537
  Message=String '' was not recognized as a valid DateTime.
  Source=System.Private.CoreLib
  StackTrace:
   at System.DateTime.ParseExact(String s, String format, IFormatProvider provider)

...

这是为什么?

c# datetime
1个回答
0
投票

您的格式字符串使用反斜杠。在自定义格式字符串中,反斜杠用于转义下一个字符,因此您的格式字符串需要诸如

"11d10y123"
之类的输入(它将解析为有效)。

如果您希望按字面意思处理反斜杠,则需要通过添加双反斜杠来转义它:

string _fmt = @"MM\\dd\\yyyy";

请注意,这不是 C# 语言级别的转义。该字符串确实包含双反斜杠,因为这就是您想要传递给

DateTime.ParseExact

© www.soinside.com 2019 - 2024. All rights reserved.