此代码片段生成异常
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)
...
这是为什么?
您的格式字符串使用反斜杠。在自定义格式字符串中,反斜杠用于转义下一个字符,因此您的格式字符串需要诸如
"11d10y123"
之类的输入(它将解析为有效)。
如果您希望按字面意思处理反斜杠,则需要通过添加双反斜杠来转义它:
string _fmt = @"MM\\dd\\yyyy";
请注意,这不是 C# 语言级别的转义。该字符串确实包含双反斜杠,因为这就是您想要传递给
DateTime.ParseExact
。