Я пытаюсь преобразовать введенное пользователем время в TimeSpans.Поскольку у TimeSpan нет метода TryParseExact, я использую метод в DateTime и преобразую выходные данные из него.
Форматы, которые я хочу обработать: 04:00, 0400, 4:00 и 400. Первые три не являются проблемой и соответствуют первым трем случаям в структуре if / else вметод ниже.Четвертый может соответствовать любому из двух последних, но ни один из них не работает.
private void dataGridView1_CellParsing(object sender, DataGridViewCellParsingEventArgs e)
{
CultureInfo enUS = new CultureInfo("en-US");
DateTime parsedDate = new DateTime();
string userInput = (string)e.Value;
if (DateTime.TryParseExact(userInput, "HH:mm", enUS, DateTimeStyles.None, out parsedDate))
{
e.Value = parsedDate.TimeOfDay;
e.ParsingApplied = true;
}
else if (DateTime.TryParseExact(userInput, "HHmm", enUS, DateTimeStyles.None, out parsedDate))
{
e.Value = parsedDate.TimeOfDay;
e.ParsingApplied = true;
}
else if (DateTime.TryParseExact(userInput, "H:mm", enUS, DateTimeStyles.None, out parsedDate))
{
e.Value = parsedDate.TimeOfDay;
e.ParsingApplied = true;
}
else if (DateTime.TryParseExact(userInput, "hmm", enUS, DateTimeStyles.None, out parsedDate))
{
e.Value = parsedDate.TimeOfDay;
e.ParsingApplied = true;
}
else if (DateTime.TryParseExact(userInput, "Hmm", enUS, DateTimeStyles.None, out parsedDate))
{
e.Value = parsedDate.TimeOfDay;
e.ParsingApplied = true;
}
}