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

时间:2012-09-19 10:59:40

标签: c# .net parsing time

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

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

所以我想知道是否必须用.替换:,或者有更简洁的方法来获取它。

6 个答案:

答案 0 :(得分:40)

解析DateTime并使用TimeOfDay结构为TimeSpan的{​​{1}}属性:

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

答案 1 :(得分:9)

更新回答:

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

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

使用TimeSpan.ParseExact,指定custom format string

var timeSpan = TimeSpan.ParseExact("11.35", "mm'.'ss", null);

答案 2 :(得分:3)

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);

答案 3 :(得分:2)

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

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

答案 4 :(得分:1)

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

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

谢谢。

答案 5 :(得分:0)

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

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

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