将HH.mm格式的字符串解析为TimeSpan

我正在使用.NET framework v 3.5 ,我需要将表示时间TimeSpan的字符串解析为TimeSpan对象。

问题是使用分隔符而不是冒号…例如13.0022.30

所以我想知道我是否需要更换.:或者有更简洁的方法来获得这个。

解析DateTime并使用TimeSpan结构的TimeOfDay属性:

 string s = "17.34"; var ts = DateTime.ParseExact(s, "HH.mm", CultureInfo.InvariantCulture).TimeOfDay; 

更新的答案:

不幸的是,.NET 3不允许使用自定义TimeSpan格式,因此您可以手动执行某些操作。 我会按你的建议做替换。

原始答案(仅适用于.NET 4+):

使用TimeSpan.ParseExact ,指定自定义格式字符串 :

 var timeSpan = TimeSpan.ParseExact("11.35", "mm'.'ss", null); 
 string YourString = "01.35"; var hours = Int32.Parse(YourString.Split('.')[0]); var minutes = Int32.Parse(YourString.Split('.')[1]); var ts = new TimeSpan(hours, minutes, 0); 

对于.Net 3.5,您可以使用DateTime.ParseExact并使用TimeOfDay属性

 string timestring = "12.30"; TimeSpan ts = DateTime.ParseExact( timestring, "HH.mm", CultureInfo.InvariantCulture ).TimeOfDay; 

试试这个(它对我有用):

 DateTime dt = Convert.ToDateTime(txtStartDate.Text).Add(DateTime.ParseExact(ddlStartTime.SelectedValue, "HH.mm", CultureInfo.InvariantCulture).TimeOfDay); 

startdate将是一个像28/02/2018的字符串,ddlstarttime是HH格式,如13.00

如果TimeSpan格式是十二小时时间格式,如“9:00 AM”,则使用格式字符串为“h:mm tt”的TimeSpan.ParseExact方法,如下所示

 TimeSpan ts = DateTime.ParseExact("9:00 AM", "h:mm tt", CultureInfo.InvariantCulture).TimeOfDay; 

谢谢。