2013-05-13 6 views
4

j'ai une chaîne d'entrée HH: MM: SS par exemple 15:43:13,Comment convertir une chaîne HH: MM: SS en date/heure?

maintenant je veux le convertir en datetime mais juste garder l'heure/heure sans la date etc

est c'est possible?

par exemple

string userInput = 15:43:13; 
DateTime userInputTime = Convert.ToDateTime(userInput); 

me donner la date complète, y compris l'année, etc., est-il possible de le convertir en tout HH: MM: SS sans triming/substring?

grâce

+4

Cela s'appelle 'TimeSpan'. – SLaks

+1

Vous ne pouvez pas. Un 'DateTime' nécessite un composant de date que vous n'avez pas fourni. Si vous voulez représenter une durée, utilisez 'TimeSpan'. – Oded

+0

Ajout .TimeOfDay –

Répondre

11

Comme d'autres l'ont dit, il est un TimeSpan.

Vous pouvez obtenir un datetime en faisant cela

string userInput = "15:43:13"; 
var time = TimeSpan.Parse(userInput); 
var dateTime = DateTime.Today.Add(time); 
+2

Ou 'TimeSpan.Parse (userInput, CultureInfo.InvariantCulture)' si la culture locale peut être "étrange" (par exemple en attendant '" 15.43.13 "'). –

+0

Si la culture locale est «étrange», il est probable que l'utilisateur entre également le format requis. Mais votre exemple fonctionne très bien pour stocker et récupérer le temps d'une autre source (comme une base de données) – jgauffin

0

Si vous ne avez pas besoin des données supplémentaires (année de etc.) utilisent TimeSpan Vous pouvez convertir de l'entrée utilisateur à un TimeSpan en utilisant Timespan.Parse

par exemple: TimeSpan ts = TimeSpan.Parse("6:12"); //06:12:00

En savoir plus ici: http://msdn.microsoft.com/en-us/library/se73z7b9.aspx

2

obtenir juste un laps de temps, vous pouvez utiliser:

TimeSpan.Parse("15:43:13") 

Mais vous devez vous demander pourquoi vous voulez faire cela comme il y a des gotchas assez importantes. Par exemple, à 2h33 du matin, le dimanche 3 novembre 2013, et l'heure d'été se termine-t-elle? Il y a deux d'entre eux.

Questions connexes