【问题标题】: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】:

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

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,因为它在日历上从未存在过。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-05-05
        • 2017-12-14
        • 1970-01-01
        • 1970-01-01
        • 2011-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多