2013-05-13 2 views
4

я имею входную строку HH: MM: SS, например 15:43:13,Как конвертировать HH: MM: SS-строка в datetime?

Теперь я хочу, чтобы преобразовать его в дату, но сохранить только час/время без даты и т.д.

является Возможно?

, например

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

даст мне полную дату, включая год и т.д., есть ли способ, чтобы преобразовать его просто HH: MM: SS без Triming/подстроку?

благодаря

+4

Это называется 'TimeSpan'. – SLaks

+1

Вы не можете. Для параметра DateTime требуется компонент даты, который вы не предоставили. Если вы хотите представить промежуток времени, используйте 'TimeSpan'. – Oded

+0

Append .TimeOfDay –

ответ

11

Как уже сказал, это TimeSpan.

Вы можете получить DateTime, делая это

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

Или 'TimeSpan.Parse (userInput, CultureInfo.InvariantCulture)', если локальная культура может быть «странной» (например, ожидать «15.43.13»). –

+0

Если местная культура «странная», то вероятность того, что пользователь также войдет в формат по мере необходимости. Но ваш пример отлично подходит для хранения и получения времени из другого источника (например, БД) – jgauffin

0

Если вам не нужны дополнительные данные (год и т.д.) используют TimeSpan Вы можете конвертировать из пользовательского ввода в TimeSpan с помощью Timespan.Parse

, например: TimeSpan ts = TimeSpan.Parse("6:12"); //06:12:00

подробнее здесь: http://msdn.microsoft.com/en-us/library/se73z7b9.aspx

2

Чтобы просто получить промежуток времени, вы можете использовать:

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

Но вы должны спросить себя, почему вы хотите это сделать, поскольку есть некоторые довольно значительные подводные камни. Например, который 2:33 AM вы хотите, когда это воскресенье, 3 ноября 2013 года, и переход на летнее время заканчивается? Их два.

Смежные вопросы