为什么以下代码会生成FormatException?
DateTime.ParseExact("03/01/2012", "dd/MM/yyyy", null);
也许这与代码在IIS 7.5 Express下作为MVC3站点执行逻辑的一部分运行这一事实有关?
答案 0 :(得分:4)
您需要包含CultureInfo,例如:
DateTime.ParseExact("03/01/2012", "dd/MM/yyyy", new CultureInfo("en-US"));
格式字符串中的斜杠对文化敏感,如果未传入CultureInfo,则使用当前文化。您也可以使用CultureInfo.InvariantCulture
,它会起作用。 Jon Skeet provides some detailed explanation here.
答案 1 :(得分:3)
取决于你的文化,取决于你的等式......
DateTime.ParseExact("03/01/2012", "dd/MM/yyyy", CultureInfo.InvariantCulture);
答案 2 :(得分:2)
根据documentation,如果满足以下条件之一,则会抛出FormatException
:
public static DateTime ParseExact(
string s,
string format,
IFormatProvider provider
)
如果传入空IFormatProvider
,我认为它默认为当前线程的文化。我必须在Reflector中看一下这个。你有什么理由想传递null
吗?
<强>更新强>
我在.NET Reflector中查看它,默认为当前线程的DateTimeFormatInfo
。我不知道是否允许我在这里发布代码。