将HH.mm格式的字符串解析为TimeSpan
我正在使用.NET framework v 3.5 ,我需要将表示时间TimeSpan
的字符串解析为TimeSpan
对象。
问题是使用点分隔符而不是冒号…例如13.00
或22.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;
谢谢。