Прежде всего, не существует универсального формата , поскольку представления даты неоднозначны , классический пример:
01/02/03 == 2 Jan 2003 (USA)
01/02/03 == 1 Feb 2003 (Russia)
01/02/03 == 3 Feb 2001 (China)
Если у вас есть коллекция ожидаемых форматов, вы можете попробовать ParseExact
, например
string[] possibleFormats = new[] {
"MM'/'dd'/'yyyy HH:mm:ss", // USA
"dd'.'MM'.'yyyy HH:mm:ss", // Russia
"yyyy'-'MM'-'dd HH:mm:ss", // China
"yyyy'-'MM'-'dd'T'HH:mm:ss", // ISO 8601
};
string value = @"09/20/2019 17:25:59";
DateTimeOffset result = DateTimeOffset.ParseExact(
value,
possibleFormats,
CultureInfo.InvariantCulture,
DateTimeStyles.AssumeLocal);