首页 > 解决方案 > 解析时间跨度 1:00 和 01:00

问题描述

我想解析一串小时,例如:16:40、01:00、12:00、1:00、4:90

我的解析方式:

txtManDezStunden.Text = TimeSpan.ParseExact(txtManStunden.Text, "hh':'mm", null).TotalHours.ToString("0.00");

如果 txtManStunden.Text 的输入为 01:00,则一切正常。当输入为 1:00 时,它“失败”,这是我想要捕捉的行为。

即使 Operator 使用 "01:00, 001:00, 1:00" 作为输入,有没有办法仍然解析

感谢您的任何建议

标签: c#parsingtimespan

解决方案


您可以做几件事,但这取决于您是否期望小时组件可以是时间跨度中的总小时数(例如TimeSpan.TotalHours属性),并且您可以获得123:00解析的输入。假设情况并非如此,那么您可以使用TimeSpan.ParseExact采用多个格式字符串的重载,例如:

var input = "001:00";
var formats = new [] { "h':'mm", "'0'h':'mm" };
var timeSpan = TimeSpan.ParseExact(input, formats, null);

但是,如果您确实需要 parse 123:00,那么您将需要手动解析字符串。幸运的是,通过拆分字符串非常简单。

var input = "001:00";
var parts = input.Split(':');  
var hours = int.Parse(parts[0]);
var minutes = int.Parse(parts[1]);
var timeSpan = new TimeSpan(hours, minutes, 0);

推荐阅读