簡體   English   中英

解析時間跨度 1:00 和 01:00

[英]Parse TimeSpan 1:00 and 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 時“失敗”,這是我想捕捉的一種行為。

即使操作員使用“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);

但是,如果您確實需要解析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);

@phuzi 的解決方案有效

我現在使用它嘗試解析的多種格式,現在就像 Charm 一樣工作。

TimeSpan.ParseExact(txtManStunden.Text, new[] { "hh':'mm", "hhh':'mm", "h':'mm", "h", "hh" }, null).TotalHours. ToString("0.00");

我現在無法解析大於 24 的小時數,有什么辦法可以在不破壞當前格式的情況下修復它?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM