Hoe tekenreeks “07:35” (HH:MM) naar TimeSpan te converteren

Ik zou graag willen weten of er een manier is om een ​​tekenreeks met 24-uurs tijdnotatie om te zetten in een TimeSpan.

Op dit moment heb ik een “ouderwetse stijl”:

string stringTime = "07:35";
string[] values = stringTime.Split(':');
TimeSpan ts = new TimeSpan(values[0], values[1], 0);

Antwoord 1, autoriteit 100%

Hoewel correct dat dit zal werken:

TimeSpan time = TimeSpan.Parse("07:35");

En als je het gebruikt voor validatie…

TimeSpan time;
if (!TimeSpan.TryParse("07:35", out time))
{
    // handle validation error
}

Onthoud dat TimeSpanin de eerste plaats bedoeld is om te werken met verstreken tijd, in plaats van met de tijd van de dag. Het accepteert waarden die groter zijn dan 24 uur en accepteert ook negatieve waarden.

Als u moet valideren dat de invoertekenreeks een geldige tijd van de dag is (>= 00:00 en < 24:00), moet u in plaats daarvan dit overwegen:

DateTime dt;
if (!DateTime.TryParseExact("07:35", "HH:mm", CultureInfo.InvariantCulture, 
                                              DateTimeStyles.None, out dt))
{
    // handle validation error
}
TimeSpan time = dt.TimeOfDay;

Als een bijkomend voordeel zal dit ook 12-uurs opgemaakte tijden ontleden wanneer een AM of PM is opgenomen, zolang u de juiste notatietekenreeks opgeeft, zoals "h:mm tt".


Antwoord 2, autoriteit 4%

Probeer

var ts = TimeSpan.Parse(stringTime);

Met een nieuwer .NET heb je ook

TimeSpan ts;
if(!TimeSpan.TryParse(stringTime, out ts)){
     // throw exception or whatnot
}
// ts now has a valid format

Dit is het algemene idioom voor het ontleden van tekenreeksen in .NET, waarbij de eerste versie foutieve tekenreeksen afhandelt door FormatException te gebruiken en de laatste de Booleaanse TryParse u de informatie rechtstreeks laat geven.


Antwoord 3, autoriteit 2%

Gebruik TimeSpan.Parseom de tekenreeks te converteren

http://msdn.microsoft.com/en-us/library/system.timespan.parse(v=vs.110).aspx


Antwoord 4, autoriteit 2%

Je kunt de tijd omrekenen met de volgende code.

TimeSpan _time = TimeSpan.Parse("07:35");

Maar als u de huidige tijd van de dag wilt zien, kunt u de volgende code gebruiken:

TimeSpan _CurrentTime = DateTime.Now.TimeOfDay;

Het resultaat is:

03:54:35.7763461

Met een object kan de Uren, Minuten, Seconden, Tekens en etc. bevatten.

Other episodes