【发布时间】:2014-01-30 09:17:35
【问题描述】:
我正在尝试使用以下格式转换日期"d/MM/yyyy"
例子:
- 2014 年 5 月 11 日
- 2013 年 12 月 12 日
- 31/01/2012
我正在使用 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
【问题讨论】:
-
请注意,您发布了解析代码,但询问为什么它是根据当前文化格式化而不显示格式化代码。
-
如果不是绝对强制以任何一种本地化格式显示日期,最好以ISO 8601 格式显示日期:yyyy-MM-dd。
-
这个解析代码没有问题,它是文化不变的。您如何询问结果,即查看
creationDateConverted的设置? -
嗨 jodrell,实际上 TryParseExact 返回 false 并将 creationDateConverted 设置为 MinValue