Why does TimeSpan.ParseExact not work

前端 未结 5 1029
既然无缘
既然无缘 2020-11-29 10:00

This is a bit wierd. Parsing a text field with a valid timespan fails if I try to be precise!

const string tmp = \"17:23:24\";
//works
var t1 = TimeSpan.Pars         


        
5条回答
  •  春和景丽
    2020-11-29 10:42

    From the documentation:

    Any other unescaped character in a format string, including a white-space character, is interpreted as a custom format specifier. In most cases, the presence of any other unescaped character results in a FormatException.

    There are two ways to include a literal character in a format string:

    • Enclose it in single quotation marks (the literal string delimiter).

    • Precede it with a backslash ("\"), which is interpreted as an escape character. This means that, in C#, the format string must either be @-quoted, or the literal character must be preceded by an additional backslash.

    The .NET Framework does not define a grammar for separators in time intervals. This means that the separators between days and hours, hours and minutes, minutes and seconds, and seconds and fractions of a second must all be treated as character literals in a format string.

    So, the solution is to specify the format string as

    TimeSpan.ParseExact(tmp, "hh\\:mm\\:ss", CultureInfo.InvariantCulture)
    

提交回复
热议问题