Ответ 1
Разберите DateTime
и используйте его свойство TimeOfDay
, которое представляет собой структуру TimeSpan
:
string s = "17.34";
var ts = DateTime.ParseExact(s, "HH.mm", CultureInfo.InvariantCulture).TimeOfDay;
Я использую .NET framework v 3.5, и мне нужно проанализировать строку, представляющую временной интервал в TimeSpan
объект.
Проблема заключается в том, что вместо двоеточия используется разделитель точка. Например 13.00
или 22.30
Так что мне интересно, нужно ли мне заменить .
на :
или есть более чистый способ получить это.
Разберите DateTime
и используйте его свойство TimeOfDay
, которое представляет собой структуру TimeSpan
:
string s = "17.34";
var ts = DateTime.ParseExact(s, "HH.mm", CultureInfo.InvariantCulture).TimeOfDay;
Обновленный ответ:
К сожалению,.NET 3 не позволяет использовать пользовательские форматы TimeSpan
, поэтому вам остается делать что-то вручную. Я просто сделаю замену, как вы предлагаете.
Оригинальный ответ (относится только к .NET 4+):
Используйте TimeSpan.ParseExact
, указав строку пользовательского формата:
var timeSpan = TimeSpan.ParseExact("11.35", "mm'.'ss", null);
string YourString = "01.35";
var hours = Int32.Parse(YourString.Split('.')[0]);
var minutes = Int32.Parse(YourString.Split('.')[1]);
var ts = new TimeSpan(hours, minutes, 0);
Для .Net 3.5 вы можете использовать DateTime.ParseExact и использовать TimeOfDay свойство
string timestring = "12.30";
TimeSpan ts = DateTime.ParseExact(
timestring,
"HH.mm",
CultureInfo.InvariantCulture
).TimeOfDay;
try This (Это сработало для меня):
DateTime dt = Convert.ToDateTime(txtStartDate.Text).Add(DateTime.ParseExact(ddlStartTime.SelectedValue, "HH.mm", CultureInfo.InvariantCulture).TimeOfDay);
startdate будет строкой вроде 28/02/2018, а ddlstarttime - в формате HH, например, в 13.00