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);
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"
.
Utilisation TimeSpan.Parse
pour convertir la chaîne
http://msdn.Microsoft.com/en-us/library/system.timespan.parse (v = vs.110) .aspx
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.
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.