【问题标题】:Why DateTime.TryParse returning false when given a real year string?为什么 DateTime.TryParse 在给出真实年份字符串时返回 false?
【发布时间】:2009-06-18 16:16:51
【问题描述】:
在下面的代码中,我给函数一个 sTransactionDate="1999" 并且我试图将它转换为日期 x/x/1999。
DateTime dTransactionDate = new DateTime();
if(DateTime.TryParse(sTransactionDate, out dTransactionDate))
{ //Happy
}else
{ //Sad
}
如果字符串是“1999”,它总是以sad结尾。有什么想法吗?
【问题讨论】:
标签:
c#
.net
datetime
tryparse
【解决方案1】:
尝试这样的事情(适当调整CultureInfo 和DateTimeStyles):
DateTime.TryParseExact
("1999",
"yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out dTransactionDate)
【解决方案2】:
怎么样...
DateTime dTransactionDate = new DateTime();
if (DateTime.TryParseExact(sTransactionDate, "yyyy",
CultureInfo.InvariantCulture, DateTimeStyles.None, out dTransactionDate))
{
// Happy
}
else
{
// Sad
}
...甚至只是...
DateTime dTransactionDate = new DateTime(int.Parse(sTransactionDate), 1, 1);
// Happy
【解决方案3】:
“1999”不是日期,而是年份
试试 1999 年 1 月 1 日
【解决方案4】:
还要在系统日历上验证您尝试解析的日期是否存在。就像您会发现 "2/29/1949" 也会返回 false,因为它在日历上从未存在过。