Подтвердить что ты не робот

Строка анализа в формате HH.mm для TimeSpan

Я использую .NET framework v 3.5, и мне нужно проанализировать строку, представляющую временной интервал в TimeSpan объект.

Проблема заключается в том, что вместо двоеточия используется разделитель точка. Например 13.00 или 22.30

Так что мне интересно, нужно ли мне заменить . на : или есть более чистый способ получить это.

4b9b3361

Ответ 1

Разберите DateTime и используйте его свойство TimeOfDay, которое представляет собой структуру TimeSpan:

string s = "17.34";
var ts = DateTime.ParseExact(s, "HH.mm", CultureInfo.InvariantCulture).TimeOfDay;

Ответ 2

Обновленный ответ:

К сожалению,.NET 3 не позволяет использовать пользовательские форматы TimeSpan, поэтому вам остается делать что-то вручную. Я просто сделаю замену, как вы предлагаете.

Оригинальный ответ (относится только к .NET 4+):

Используйте TimeSpan.ParseExact, указав строку пользовательского формата:

var timeSpan = TimeSpan.ParseExact("11.35", "mm'.'ss", null);

Ответ 3

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);

Ответ 4

Для .Net 3.5 вы можете использовать DateTime.ParseExact и использовать TimeOfDay свойство

string timestring = "12.30";
TimeSpan ts = DateTime.ParseExact(
                                  timestring, 
                                  "HH.mm", 
                                  CultureInfo.InvariantCulture
                                  ).TimeOfDay;

Ответ 5

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