public static DateTime? GetDateTimeFromInput(string dateTimeStr) {
if (string.IsNullOrWhiteSpace(dateTimeStr))
return null;
if (DateTime.TryParse(dateTimeStr, out var dateTime))
return dateTime;
return null;
}
public static bool GetBoolFromInput(string input, bool def = false)
{
if (string.IsNullOrWhiteSpace(input))
return def;
if (bool.TryParse(input.Trim(), out var res))
return res;
return def;
}
public static IEnumerable<int> GetNumberMatches(string s) => Regex.Matches(s, @"\d+").Select(m => int.TryParse(m.Value, out var i) ? i : 0);
public static DateTime? GetDateFromNumbers(string s) {
var numbers = GetNumberMatches(s).ToList();
if (numbers.Count < 3) return null;
var y = numbers.ElementAtOrDefault(0);
var m = numbers.ElementAtOrDefault(1);
var d = numbers.ElementAtOrDefault(2);
if (y == 0 || m == 0 || d == 0) return null;
var h = numbers.ElementAtOrDefault(3);
var min = numbers.ElementAtOrDefault(4);
var sec = numbers.ElementAtOrDefault(5);
return new DateTime(y,m,d,h,min,sec);
}
public static DateTime? DateFromString(string? s)
{
if (s == null) return null;
if (DateTime.TryParse(s, out var d)) return d;
return GetDateFromNumbers(s);
}288600cookie-checkC# Get DateTime from input