将英国格式的字符串 DateTime ("dd/MM/yyyy") 转换为文化可能发生变化的有效 DateTime

Converting a UK formatted string DateTime ("dd/MM/yyyy") to a valid DateTime where the culture may change

我的应用程序只接收 "dd/MM/yyyy" 格式的字符串,它必须将这些字符串转换为有效的日期时间,这取决于应用程序 运行 所在的机器的文化(美国、英国等) .如果我的应用程序 运行 在美国文化机器上使用 TryParseExact 方法从字符串到有效日期时间的转换失败,因为它正在接收英国格式字符串并尝试解析为美国字符串。

如何将英国格式 "dd/MM/yyyy" 的字符串解析为有效的 DateTime,其格式取决于文化信息。例如。到“MM/dd/yyyy 如果它在美国机器上?我遇到的麻烦比我想象的要多。谢谢

var culture = CultureInfo.CurrentCulture;
string format = culture.DateTimeFormat.ShortDatePattern;

DateTime RequestFrom;
DateTime RequestTo;
DateTime.TryParseExact("01/12/2019", format, culture, DateTimeStyles.None, out RequestFrom);
DateTime.TryParseExact("19/12/2019", format, culture, DateTimeStyles.None, out RequestTo);

方法 1 - 您可以通过提供输入格式

来使用ParseExact
string inputdate = "01/12/2019";
var date = DateTime.ParseExact(inputdate, "dd/MM/yyyy", CultureInfo.InvariantCulture);

方法2 - 如果你有多种输入格式,你可以使用TryParseExact

string inputdate = "01/12/2019";
DateTime dateTime = ParseDate(inputdate )

private static DateTime ParseDate(string providedDate)
{
    DateTime validDate;
    string[] formats = { "dd/MM/yyyy", "dd.MM.yyyy" };
    var dateFormatIsValid = DateTime.TryParseExact(
        providedDate,
        formats,
        CultureInfo.InvariantCulture,
        DateTimeStyles.None,
        out validDate);
    return dateFormatIsValid ? validDate : DateTime.MinValue;
}