DateTime.ParseExact()
提升并且错误消息是
日历System.Globalization.GregorianCalendar中不支持字符串表示的DateTime。
这种方式我试图解析日期
string strDate ="03/17/2014"
DateTime dt= DateTime.ParseExact(strDate, "dd/MM/yyyy", CultureInfo.InvariantCulture)
所以上面的日期是正确的日期然后我收到错误的原因。当应用程序在任何国家运行时,解析日期的最佳方法是什么,系统pc日期时间设置可以是任何东西。请指导我。
我改变datetime parseexact to only parse
喜欢
string strDate ="03/17/2014"
DateTime dt= DateTime.Parse(strDate)
上面的代码工作正常。所以告诉我ParseExact()
中的问题是什么
感谢
答案 0 :(得分:6)
month
之前的day
"03/17/2014"
,"MM/dd/yyyy"
,DateTime dt= DateTime.ParseExact(strDate, "MM/dd/yyyy", CultureInfo.InvariantCulture)
,你得到例外,因为月份不应该是17,它可能有1到12的值您可以详细了解自定义日期格式here。
{{1}}
答案 1 :(得分:3)
没有17个月,请使用"MM/dd/yyyy"
代替"dd/MM/yyyy"
:
DateTime dt= DateTime.ParseExact("03/17/2014", "MM/dd/yyyy", CultureInfo.InvariantCulture)
<强>更新强>:
我们是否必须指定格式。我不想 指定格式然后如何使用它。基本上是pc在哪里 应用程序将在那里运行datetime设置可以是任何类似的 dd / mm / yy或mm / dd / yy等
如果它可以是任何东西你就有问题。什么月02/03/2012
,2月或3月?您必须指定string[]
个允许的格式。您可以通过数组中的顺序为其赋予优先级。然后,您可以使用带有DateTime.ParseExact
的重载string[]
。
另一种方法是接受您不了解当前文化,但您知道该字符串是当前文化的有效格式,/
为日期分隔符。然后,您可以克隆当前DateTimeFormat
并更改DateSeparator
然后你甚至可以使用DateTime.Parse
:
var customDateTimeFormat = (DateTimeFormatInfo)DateTimeFormatInfo.CurrentInfo.Clone();
customDateTimeFormat.DateSeparator = "/";
DateTime dt = DateTime.Parse("17/03/2014", customDateTimeFormat);
即使我们使用.
作为日期分隔符,这对我在德国也有用,我需要使用"17/03/2014"
因为这一天来到这个月之前。
答案 2 :(得分:2)
来自The "MM" Custom Format
Specifier
“MM”自定义格式说明符将月份表示为来自的数字 01到12(对于有13的日历,从1到13) 个月)强>
您应该使用MM/dd/yyyy