为什么Timespan.TryParseExact没有按预期解析输入?

时间:2013-11-27 18:52:55

标签: c# asp.net

我有这段代码:

var test = TimeSpan.MinValue;
var t = TimeSpan.TryParseExact(
    "03:01 PM", 
    "hh:mm tt", 
    CultureInfo.InvariantCulture, out test);

t显示为false。我确定我错过了一些东西,我只是想不出来!

3 个答案:

答案 0 :(得分:3)

这是你的字符串中的AM / PM指示符。它不应该存在。

TimeSpan表示持续时间。

答案 1 :(得分:3)

将其更改为DateTime并且它将起作用,timepan是持续时间,而不是解析日期

var test = DateTime.MinValue;
var t = DateTime.TryParseExact("03:01 PM", "hh:mm tt", CultureInfo.CurrentCulture, DateTimeStyles.AssumeLocal, out test);

答案 2 :(得分:3)

时间跨度衡量一段时间。因此AM / PM没有意义,输入或格式字符串不支持。

此MSDN页面详细说明了有效的自定义格式说明符: Custom TimeSpan Format Strings

正如@Austin Salonen在评论中建议的那样,既然您正在尝试获取日期和时间,那么您应该将输入解析为DateTime而不是TimeSpan。