У меня есть одна строковая переменная, в которой хранится то, что может быть полной или неполной датой:
1) Полная дата: 12.12.2010, 00:33
2)Частичная дата: 12:33 (без поля даты, только время)
Я пытаюсь выяснить, как лучше всего проанализировать строку, чтобы выяснить, отсутствует ли строка в строке даты или нет,Причина в том, что в моем коде, если дата пропущена, я добавлю в строку дату по умолчанию (например, 01.01.1900).Имейте в виду, что время может быть в разных форматах.
Обновление - мой конкретный ответ на эту проблему.
Как отмечалось во всех «постах», существует несколько ответов на эту проблему,в конечном итоге это то, что я использовал, и надеюсь, что это может помочь другим *:
public DateTime ProcessDateAndTime(string dateString)
{
string dateAndTimeString = dateString;
string[] timeFormats = new string[]
{
"hh:mm tt", "hh:mm:ss tt",
"h:mm tt", "h:mm:ss tt",
"HH:mm:ss", "HH:mm", "H:mm"
};
// check to see if the date string has a time only
DateTime dateTimeTemp;
if (DateTime.TryParseExact(dateString, timeFormats,
CultureInfo.InvariantCulture.DateTimeFormat, DateTimeStyles.None, out dateTimeTemp))
{
// setting date to 01/01/1900
dateAndTimeString = new DateTime(1900, 1, 1).ToShortDateString() + " " + dateString;
}
return DateTime.Parse(dateAndTimeString);
}
* Примечание. Этот метод основан на предположении, что в вашем приложении используется только определенное количество форматов времени, и чтогарантируется, что передана правильно отформатированная строка даты и времени или только время (предварительная проверка для удаления мусорного текста).