将英国格式的字符串 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;
}
我的应用程序只接收 "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;
}