c# преобразование строки в дату

У меня есть строка вроде этой "24: 00: 00", и я хотел бы преобразовать ее во время. Я попытался преобразовать и DateTime.Разбор, но кажется, что ему тоже нужна дата. Есть ли способ просто получить время, или мне тоже нужно назначить дату?

6 ответов


Если вас интересует только компонента времени, рассмотрите возможность использования TimeSpan вместо DateTime.

var time = TimeSpan.Parse("23:59:59");

Я не уверен, что "24:00:00" будет действительное время. Любым способом, вам не нужно указывать дату, вы можете это сделать...

DateTime time = DateTime.ParseExact("23:59:59", "HH:mm:ss", null);

Если ваше время на самом деле время дня, то я бы предложил придерживаться DateTime. Если вы действительно используете количество времени (т. е. может быть больше, чем 23:59:59), вы можете использовать TimeSpan...

TimeSpan time = TimeSpan.ParseExact("23:59:59", "HH:mm:ss", null);

Не забывайте, что у обоих есть версия TryParseExact, если вы не уверены, что ввод будет действительным


можно использовать DateTimeFormatInfo для форматирования DateTime.

string strDate = "23:10:00";
DateTimeFormatInfo dtfi = new DateTimeFormatInfo();
dtfi.ShortTimePattern = "hh:mm:ss";
dtfi.TimeSeparator = ":";
DateTime objDate = Convert.ToDateTime(strDate, dtfi);
Console.WriteLine(objDate.TimeOfDay.ToString());

Я думаю, что вам нужно ?


вы можете использовать timespan

http://msdn.microsoft.com/en-us/library/system.timespan.aspx


как о

var time = new DateTime.Today;
var str = "24:00:00";
var split = str.split(":");

time.AddHours(Convert.ToInt32(split[0]));
time.AddMinutes(Convert.ToInt32(split[1]));
time.AddSeconds(Convert.ToInt32(split[2]));

надеюсь, что это помогает.