C# 将英国格式的字符串DateTime(“dd/MM/yyyy”)转换为区域性可能更改的有效日期时间
我的应用程序只接收“dd/MM/yyyy”格式的字符串,它必须将这些字符串转换为有效的日期时间,这取决于运行应用程序的机器的区域性(美国、英国等)。如果我的应用程序在美国区域性计算机上运行,则使用TryParseExact方法从字符串到有效日期时间的转换将失败,因为它正在接收UK格式字符串并尝试解析为美国字符串 如何将英国格式为“dd/MM/yyyy”的字符串解析为有效的日期时间,该日期时间的格式取决于区域性信息。例如,如果是在美国机器上,则为“MM/dd/yyyy?我遇到的问题比我想象的要多。谢谢C# 将英国格式的字符串DateTime(“dd/MM/yyyy”)转换为区域性可能更改的有效日期时间,c#,datetime,datetime-format,cultureinfo,tryparse,C#,Datetime,Datetime Format,Cultureinfo,Tryparse,我的应用程序只接收“dd/MM/yyyy”格式的字符串,它必须将这些字符串转换为有效的日期时间,这取决于运行应用程序的机器的区域性(美国、英国等)。如果我的应用程序在美国区域性计算机上运行,则使用TryParseExact方法从字符串到有效日期时间的转换将失败,因为它正在接收UK格式字符串并尝试解析为美国字符串 如何将英国格式为“dd/MM/yyyy”的字符串解析为有效的日期时间,该日期时间的格式取决于区域性信息。例如,如果是在美国机器上,则为“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;
}
方法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;
}
将
format
设置为UK格式,而不是当前区域性的格式。如果字符串始终为“dd/MM/yyyy”格式,则这是您要用于分析字符串的格式。将format
设置为UK格式,而不是当前区域性的格式。如果字符串始终为“dd/MM/yyyy”格式“格式-然后这就是您要用于解析字符串的格式。如果这是在美国计算机上,则由于英国格式和美国格式,解析似乎失败culture@Zeus7您是说在美国机器上,您的输入字符串实际上是“MM/dd/yyyy”格式的吗?您的问题指出输入字符串始终为“dd/MM/yyyy”。你确定问题不在于解析日期后如何显示日期吗?抱歉,我这里错了,测试数据中的字符串是2019年11月31日,这无论如何都是无效的日期!如果这是在美国机器上,由于英国格式和美国格式,解析似乎会失败culture@Zeus7您是说在美国机器上,您的输入字符串实际上是“MM/dd/yyyy”格式的吗?您的问题指出输入字符串始终为“dd/MM/yyyy”。你确定问题不在于解析日期后如何显示日期吗?抱歉,我这里错了,测试数据中的字符串是2019年11月31日,这无论如何都是无效的日期!