为什么这行代码 有时 会抛出 System.FormatException

DateTime d = DateTime.ParseExact("01.07.2014", "dd/MM/yyyy", CultureInfo.InvariantCulture);

最佳答案

因为您的字符串和格式不匹配。

来自 documentation ;



改用 dd.MM.yyyy 格式。

DateTime d = DateTime.ParseExact("01.07.2014",
                                 "dd.MM.yyyy",
                                 CultureInfo.InvariantCulture);

这里是 demonstration

请记住, "/" custom format specifier 在自定义日期和时间格式中具有特殊含义。它的意思是;用当前的文化日期分隔符替换我。

在您的个人资料中,它说您来自阿塞拜疆。这意味着您的 CurrentCulture 可能是 az-Cyrl-AZ(西里尔文,阿塞拜疆)或 az-Latn-AZ(拉丁文,阿塞拜疆)。

实际上,在这种情况下使用哪种文化并不重要,因为两种文化都将 . 作为 DateSeparator property

这意味着您的原始代码也适用于您的 CurrentCulture
DateTime d = DateTime.ParseExact("01.07.2014",
                                 "dd/MM/yyyy",
                                 CultureInfo.CurrentCulture);
                                 // or you can use null

有关更多信息,请查看;
  • Custom Date and Time Format Strings
  • 关于c# - DateTime.ParseExact 抛出 System.FormatException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24823219/

    10-13 06:16