I suggest to use DateTime in your struct (or better a class but this is not important here). In this way the validation of the input is more focused to the expected value and you could avoid using regex expressions
List<ParkTime> parktimes = new List<ParkTime>();
foreach (string line in File.ReadLines("file.txt"))
{
bool isValid = true;
string[] times = line.Split(',');
DateTime dtInit;
if(!DateTime.TryParseExact(times[0].Trim(), "HH:mm",
System.Globalization.CultureInfo.InvariantCulture,
System.Globalization.DateTimeStyles.NoCurrentDateDefault,
out dtInit))
isValid = false;
DateTime dtEnd;
if (!DateTime.TryParseExact(times[1].Trim(), "HH:mm",
System.Globalization.CultureInfo.InvariantCulture,
System.Globalization.DateTimeStyles.NoCurrentDateDefault,
out dtEnd))
isValid = false;
if (isValid)
parktimes.Add(new ParkTime() { startTime = dtInit, endTime = dtEnd });
}
public struct ParkTime
{
public DateTime startTime { get; set; }
public DateTime endTime { get; set; }
}
And about using class or struct to model your data, this is a classical answer from E.Lippert (main developer for the C# Language)