TimeSpan 时间格式不匹配 C#

TimeSpan timeformat mismatch C#

提问人:LaNi 提问时间:8/6/2023 最后编辑:Soner GönülLaNi 更新时间:8/6/2023 访问量:31

问:

一行代码,我尝试创建一个包含 ."00:00:00.000"

我的时间格式是,它取自在我拥有的另一个项目中与这种确切时间格式一起使用的代码。"HH:mm:ss.fff"

但它给出了一个不匹配的异常。

Chatgpt 和 stackoverflow 中的其他答案建议使用下面的示例,但它确实存在完全相同的异常。CultureInfonull

string timeFormat= "HH:mm:ss.fff";
TimeSpan timeZero = TimeSpan.ParseExact("00:00:00.000", timeformat, CultureInfo.InvariantCulture);
C# 日期时间 格式 datetime 格式 timespan

评论


答:

1赞 Soner Gönül 8/6/2023 #1

Timespan解析与解析略有不同。DateTime

文档

重要

自定义 TimeSpan 格式说明符不包括占位符 分隔符符号,例如将日期与小时分隔开的符号, 小时从分钟开始,或秒从小数秒开始。取而代之的是,这些 符号必须作为字符串包含在自定义格式字符串中 文字。例如,将句点 () 定义为 天和小时之间的分隔符,冒号 () 作为分隔符 在小时和分钟之间。"dd\.hh\:mm".:

没有自定义说明符,它应该是 hh。顺便说一句,是不同的变量名称,在 C# 中,这些名称区分大小写,您也需要修复它。HHTimeSpantimeFormattimeformat

string timeFormat = @"hh\:mm\:ss\.fff";
TimeSpan timeZero = TimeSpan.ParseExact("00:00:00.000", timeFormat, 
                                        CultureInfo.InvariantCulture);

这里有一个演示

请注意,有一个只读字段 TimeSpan.Zero,您也可以使用它。

顺便说一句,解析或显示操作始终很重要。使用 for 时,它始终使用 CurrentCulture 属性。因此,如果输入字符串的时间分隔符与当前区域性的 DateTimeFormatInfo.TimeSeparator 属性不匹配,则分析操作可能会失败。CultureInfonullCultureInfo