c# - 解析时间跨度 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" 作为输入,有没有办法仍然解析
感谢您的任何建议
解决方案
您可以做几件事,但这取决于您是否期望小时组件可以是时间跨度中的总小时数(例如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);
推荐阅读
- laravel - laravel eloquent 在急切加载时生成错误的查询
- c - 使用 WinAPI 在 C 中获取当前用户的桌面路径
- javascript - 单击 HTML 内的链接时无法将 HTML 加载到 HTA 文件中
- .net - 每行具有不同列的.net数据结构(二维或多维数组除外)
- ios - 如何使用 MessagingCenter 从 PCL 通过 Xamarin Forms 向 iOS 发送消息?
- android - 在新版本中升级数据库表而不丢失android studio中的旧版本数据
- swift - iOS Swift BLE UART,其中 didUpdateValueFor 仅被调用两次并退出
- javascript - Firebase - 尝试从数据库中获取项目时出错
- angularjs - 是否有降低 AngularJS 1.x 摘要周期数量的配置选项?
- java - GWT - 当另一个 CheckboxCell 被选中时,如何以编程方式取消选中一个 CheckboxCell?