web-dev-qa-db-fra.com

Comment convertir la chaîne "07:35" (HH: MM) en TimeSpan

J'aimerais savoir s'il existe un moyen de convertir une chaîne au format heure 24 heures en TimeSpan.

En ce moment j'ai un "style ancien":

string stringTime = "07:35";
string[] values = stringTime.Split(':');

TimeSpan ts = new TimeSpan(values[0], values[1], 0);
29
VAAA

Bien que correct que cela fonctionnera:

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

Et si vous l'utilisez pour la validation ...

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

Considérez que TimeSpan est principalement conçu pour fonctionner avec le temps écoulé plutôt qu'avec l'heure. Il acceptera les valeurs supérieures à 24 heures, ainsi que les valeurs négatives.

Si vous devez valider que la chaîne d'entrée est une heure valide (> = 00:00 et <24:00), vous devriez envisager ceci à la place:

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

De plus, cela analysera également les heures formatées sur 12 heures lorsqu’un AM ou PM est inclus), à condition que vous fournissiez la chaîne de formatage appropriée, telle que "h:mm tt".

89
Matt Johnson-Pint
3
Adrian

Essayer

var ts = TimeSpan.Parse(stringTime);

Avec un nouveau .NET vous avez aussi

TimeSpan ts;

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

C’est l’idéal général pour analyser les chaînes dans .NET avec la première version gérant une chaîne erronée en lançant FormatException et en laissant ce dernier booléen TryParse vous donner les informations directement.

3
faester

Vous pouvez convertir l'heure en utilisant le code suivant.

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

Mais si vous voulez obtenir l'heure actuelle du jour, vous pouvez utiliser le code suivant:

TimeSpan _CurrentTime = DateTime.Now.TimeOfDay;

Le résultat sera:

03:54:35.7763461

Avec un objet, conservez les heures, les minutes, les secondes, les tiques, etc.

1
Muhammad Awais