将英国格式的字符串 DateTime ("dd/MM/yyyy") 转换为区域性可能会更改的有效日期时间



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

如何将英国格式的字符串"dd/MM/yyyy"解析为有效的日期时间,其格式取决于区域性信息。 例如,如果它在美国机器上,则转换为"MM/dd/yyyyy"?我遇到的麻烦比我想象的要多。谢谢

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;
}

最新更新