Как преобразовать 12-часовую строку времени в С# TimeSpan?
Когда пользователь заполняет форму, они используют раскрывающийся список, чтобы указать, в какое время они хотели бы запланировать тест. Этот выпадающий список содержит все время дня с шагом 15 минут в 12-часовой форме AM/PM. Например, если пользователь выбирает 4:15 вечера, сервер отправляет строку "4:15 PM"
на веб-сервер с отправкой формы.
Мне нужно как-то преобразовать эту строку в Timespan, поэтому я могу сохранить ее в поле времени базы данных (с linq to sql).
Кто-нибудь знает о хорошем способе преобразования строки времени AM/PM в промежуток времени?
Ответы
Ответ 1
Вероятно, вы хотите использовать DateTime
вместо TimeSpan
. Вы можете использовать DateTime.ParseExact
для синтаксического анализа строки в объект DateTime.
string s = "4:15 PM";
DateTime t = DateTime.ParseExact(s, "h:mm tt", CultureInfo.InvariantCulture);
//if you really need a TimeSpan this will get the time elapsed since midnight:
TimeSpan ts = t.TimeOfDay;
Ответ 2
Самый простой способ:
var time = "4:15 PM".ToTimeSpan();
.
Это принимает код Фила и помещает его в вспомогательный метод. Это тривиально, но это делает один вызов:
public static class TimeSpanHelper
{
public static TimeSpan ToTimeSpan(this string timeString)
{
var dt = DateTime.ParseExact(timeString, "H:mm tt", System.Globalization.CultureInfo.InvariantCulture);
return dt.TimeOfDay;
}
}
Ответ 3
Попробуйте следующее:
DateTime time;
if(DateTime.TryParse("4:15PM", out time)) {
// time.TimeOfDay will get the time
} else {
// invalid time
}
Ответ 4
Мне нравится, что Ли отвечает на лучшее, но acermate был бы правильным, если вы хотите использовать tryparse. Чтобы объединить это и получить временные рамки, выполните следующие действия:
public TimeSpan GetTimeFromString(string timeString)
{
DateTime dateWithTime = DateTime.MinValue;
DateTime.TryParse(timeString, out dateWithTime);
return dateWithTime.TimeOfDay;
}
Ответ 5
Try:
string fromServer = <GETFROMSERVER>();
var time = DateTime.Parse(fromServer);
Это дает вам время, если вы также создаете конечное время, вы можете получить Timespans, выполнив арифметические объекты w/DateTime.