繁体   English   中英

C#TryParseExact CultureInfo.InvariantCulture在文化更改时更改行为

[英]C# TryParseExact CultureInfo.InvariantCulture Changing behavior when culture change

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

例如:

  • 5/11/2014
  • 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-FR,则效果很好。

但是,如果我不设置这种文化就行不通,它会将其转换为MM / dd / yyyy格式,当然某些日期不会与该格式一起传递。

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

我还尝试为该方法提供文化fr-Fr,但没有运气

编辑:当我说失败时,我的意思是TryParseExact方法返回false

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

如果您想要特定的格式,请使用以下命令:

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

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

但是,这种文化可能会影响您查询DateTime creationDateConverted的值时发生的情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM