C#TryParseExact CultureInfo.InvariantCulture在区域性更改时更改行为

C#TryParseExact CultureInfo.InvariantCulture在区域性更改时更改行为,c#,parsing,date,datetime,C#,Parsing,Date,Datetime,我正在尝试使用以下格式转换日期“d/MM/yyyy” 例如: 2014年11月5日 2013年12月12日 2012年1月31日 我使用的是TryParseExact方法: private const string DateFormat = "d/MM/yyyy"; Culture = CultureInfo.InvariantCulture; DateTime creationDateConverted; DateTime.TryParseExact(creationDate, DateF

我正在尝试使用以下格式转换日期
“d/MM/yyyy”

例如:

  • 2014年11月5日
  • 2013年12月12日
  • 2012年1月31日
我使用的是TryParseExact方法:

private const string DateFormat = "d/MM/yyyy";
Culture = CultureInfo.InvariantCulture;
DateTime creationDateConverted;
DateTime.TryParseExact(creationDate, DateFormat, Culture, 
            DateTimeStyles.None, out creationDateConverted);
显示方法为

@Html.DisplayFor(m => object.date)

date having :  DisplayFormat( DataFormatString="{0:d/MM/yyyy}")
托管网站的服务器具有美国文化

如果我使用Web.config将区域性设置为fr,效果会很好。

但如果我不设置该区域性,它将不工作,它将转换为MM/dd/yyyy格式,当然,某些日期不会以该格式传递

我不明白为什么文化会对这个方法产生影响,因为我提供了一个特定的格式和文化不变量

我还试图为这种方法提供一种文化,但没有成功


EDIT:当我说fail时,我的意思是TryParseExact方法返回false

DateTime没有格式。而ToString方法的输出取决于区域性


如果需要特定格式,请使用以下格式:

creationDateConverted.ToString("d/MM/yyyy");

DateTime没有格式。而ToString方法的输出取决于区域性


如果需要特定格式,请使用以下格式:

creationDateConverted.ToString("d/MM/yyyy");

DateTime没有格式。而ToString方法的输出取决于区域性


如果需要特定格式,请使用以下格式:

creationDateConverted.ToString("d/MM/yyyy");

DateTime没有格式。而ToString方法的输出取决于区域性


如果需要特定格式,请使用以下格式:

creationDateConverted.ToString("d/MM/yyyy");

您发布的解析代码不受任何外部区域性设置的影响


但是,当您询问
DateTime
creationDateConverted
的值时,区域性可能会影响所发生的情况。您发布的解析代码不受任何外部区域性设置的影响


但是,当您询问
DateTime
creationDateConverted
的值时,区域性可能会影响所发生的情况。您发布的解析代码不受任何外部区域性设置的影响


但是,当您询问
DateTime
creationDateConverted
的值时,区域性可能会影响所发生的情况。您发布的解析代码不受任何外部区域性设置的影响



但是,当您询问
DateTime
creationDateConverted

的值时,区域性可能会影响所发生的情况。请注意,您发布了解析代码,但是询问为什么它是基于当前区域性进行格式化的,而不显示格式化代码。如果不是绝对强制要求以任何类型的本地化格式显示日期,那么最好以yyyy-MM-dd格式显示日期。此解析代码没有问题,它是区域性不变的。您如何询问结果,即查看
creationDateConverted
设置为什么?嗨,jodrell,实际上TryParseExact返回false并将creationDateConverted设置为MinValueNote,您发布了解析代码,但是询问为什么它是基于当前区域性进行格式化的,而不显示格式化代码。如果不是绝对强制要求以任何类型的本地化格式显示日期,那么最好以yyyy-MM-dd格式显示日期。此解析代码没有问题,它是区域性不变的。您如何询问结果,即查看
creationDateConverted
设置为什么?嗨,jodrell,实际上TryParseExact返回false并将creationDateConverted设置为MinValueNote,您发布了解析代码,但是询问为什么它是基于当前区域性进行格式化的,而不显示格式化代码。如果不是绝对强制要求以任何类型的本地化格式显示日期,那么最好以yyyy-MM-dd格式显示日期。此解析代码没有问题,它是区域性不变的。您如何询问结果,即查看
creationDateConverted
设置为什么?嗨,jodrell,实际上TryParseExact返回false并将creationDateConverted设置为MinValueNote,您发布了解析代码,但是询问为什么它是基于当前区域性进行格式化的,而不显示格式化代码。如果不是绝对强制要求以任何类型的本地化格式显示日期,那么最好以yyyy-MM-dd格式显示日期。此解析代码没有问题,它是区域性不变的。您如何询问结果,即查看
creationDateConverted
设置为什么?嗨,jodrell,实际上TryParseExact返回false并将creationDateConverted设置为MinValue“如果您想要特定格式,请使用此格式”-您的示例并不明确,因为它使用了特定于区域性的日期分隔符“/”。例如,在德国文化中,这将呈现为“”。您应该添加一个参数CultureInfo.InvariantCulture.Hi谢谢,我使用的是带有“d/MM/yyyy”的DisplayFormat,所以我不认为这是问题。实际上,问题是creationDate,它在服务器上具有不同的格式,因此您的解决方案是有效的。谢谢大家!“如果您想要一种特定的格式,请使用此格式”-您的示例并不明确,因为它使用了特定于区域性的日期分隔符“/”。例如,在德国文化中,这将呈现为“”。您应该添加一个参数CultureInfo.InvariantCulture.Hi谢谢,我使用的是带有“d/MM/yyyy”的DisplayFormat,所以我不认为这是问题。实际上,问题是creationDate,它在服务器上具有不同的格式,因此您的解决方案是有效的。谢谢大家!“如果您想要一种特定的格式,请使用此格式”-您的示例并不明确,因为它使用了特定于区域性的日期分隔符“/”。例如,在德国文化中,这将呈现为“”。您应该添加一个参数CultureInfo.InvariantCulture.Hi谢谢,我使用的是带有“d/MM/yyyy”的DisplayFormat,所以我不认为这是问题。实际上,问题是creationDate,它在服务器上具有不同的格式,因此您的解决方案是有效的。谢谢大家!“如果你想要一个特定的f