3

在下面的代码中,我给函数一个 sTransactionDate="1999" 并且我试图将它转换为日期 x/x/1999。

DateTime dTransactionDate = new DateTime();
if(DateTime.TryParse(sTransactionDate, out dTransactionDate))
{ //Happy 
}else
{ //Sad 
}

如果字符串是“1999”,它总是会以悲伤结尾。有任何想法吗?

4

4 回答 4

15

尝试这样的事情(适当调整CultureInfoDateTimeStyles):

DateTime.TryParseExact
  ("1999",
   "yyyy",
   CultureInfo.InvariantCulture,
   DateTimeStyles.None,
   out dTransactionDate)
于 2009-06-18T16:20:34.447 回答
4

怎么样...

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
于 2009-06-18T16:28:04.350 回答
2

“1999”不是日期,而是一年尝试 1/1/1999

于 2009-06-18T16:19:54.507 回答
0

还要在系统日历上验证您尝试解析的日期是否存在。就像您会发现 "2/29/1949" 也将返回 false 一样,因为它在日历上从未存在过。

于 2016-09-20T19:38:44.260 回答