DateTime.TryParseExact不起作用-返回false,但应为true

时间:2019-09-25 09:08:23

标签: c# .net

我尝试使用TryParseExact验证DateTime对象。任务是检查DateTime是否包含时间,而不仅仅是日期。到目前为止,我拥有的代码:

public bool validateDateAndTime(DateTime checkDateFormat)
{
      checkDateFormat = new DateTime(2019, 02, 02, 23, 33, 21); 
      DateTime checkOutDate; 
      if(DateTime.TryParseExact(checkDateFormat.ToString(), "yyyy-MM-dd hh:mm:ss", CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.AllowWhiteSpaces, out checkOutDate))
      {
          return true;
      }
      else
      {
          Console.WriteLine(checkDateFormat.ToString() + " " + checkOutDate);
          return false;
      }
}

这对我来说毫无意义,因为我在if之前设置了"yyyy, mm, dd, hh, mm, ss"

打印的控制台行:

  

2019-02-02 23:33:21 0001-01-01 00:00:00

2 个答案:

答案 0 :(得分:-1)

您的ToString()输出与yyyy-MM-dd hh:mm:ss:的确切格式不匹配

public bool validateDateAndTime(DateTime checkDateFormat)
{
    checkDateFormat = new DateTime(2019, 02, 02, 23, 33, 21);
    if (DateTime.TryParseExact(checkDateFormat.ToString("yyyy-MM-dd HH:mm:ss"), "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.AllowWhiteSpaces, out DateTime checkOutDate))
    {
        Console.WriteLine($"Validated: {checkOutDate}");
        return true;
    }
    else
    {
        Console.WriteLine(checkDateFormat.ToString() + " " + checkOutDate);
        return false;
    }
}

答案 1 :(得分:-1)

您实际上是在转换DateTime.ToString(),默认情况下它是通用格式,并且处于美国文化下。

如果要以其他格式显示时间,请指定其格式。

尝试一下

my_new_column