测试将字符串转换为DateTime.TryParseExact以外的日期时间

时间:2013-07-10 08:07:44

标签: c# string datetime typeconverter tryparse

美好的一天,

通常,如果我想测试字符串是否是有效的日期时间格式,我将使用:

if (DateTime.TryParseExact()){
//do something
}

我想问一下,有没有代码可以直接测试Convert.ToDateTime()是否成功? 例如:

if (Convert.ToDateTime(date1)){
//do something
}

if(Convert.ToDateTime(date1) == true){
//do soemthing
}

我的想法是让它成为测试它成功转换到日期时间的bool。 只是试图找出代码而不是使用DateTime.TryParseExact()

4 个答案:

答案 0 :(得分:4)

您的第一个代码

if (DateTime.TryParseExact()) {
    //do something
}

完全符合您的要求。

像这样使用:

if (DateTime.TryParseExact(str, ...)) {    // OR use DateTime.TryParse()
    // str is a valid DateTime
}
else {
    // str is not valid
}

如果您不想提供格式,可以使用DateTime.TryParse() 两种方法都返回bool ean值。

答案 1 :(得分:2)

如果你真的想要你可以使用转换为。但是,使用这意味着您无法获得tryparse可以为您提供的功能。

<强>的TryParse:

-Simple if / else validation

- 如果将不良数据放入其中,请不要崩溃并烧毁您的应用

public static bool
{ 
    TryParse(string s, out DateTime result)
}

然后if else验证

<强>的ConvertTo:

- 如果输入错误数据,您的应用程序将崩溃

-Better将try catch包含在此

- 查看msdn article on ConvertTo

 private static void ConvertToDateTime(string value)
 {
  DateTime convertedDate;
  try {
     convertedDate = Convert.ToDateTime(value);
     Console.WriteLine("'{0}' converts to {1} {2} time.", 
                       value, convertedDate, 
                       convertedDate.Kind.ToString());
  }
  catch (FormatException) {
     Console.WriteLine("'{0}' is not in the proper format.", value);
  }
}

在我眼里,你应该总是喜欢Tryparse。

答案 2 :(得分:0)

根据您的意见:

  

我需要声明要检查的格式,有时候日期时间格式可能不同,这就是为什么我在想是有任何代码就像我想的那样。

TryParseExact已采用格式。

这个简短的示例使用TryParseExact执行您想要的操作。如果格式或日期错误,TryParseExact将不会抛出异常,因此您不必担心昂贵的Try/Catch块。相反,它将返回false

static void Main()
{
    Console.Write(ValidateDate("ddd dd MMM h:mm tt yyyy", "Wed 10 Jul 9:30 AM 2013"));
    Console.Read();
}

public static bool ValidateDate(string date, string format)
{
   DateTime dateTime;
   if (DateTime.TryParseExact(date, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTime))
   {
       Console.WriteLine(dateTime);
       return true;
   }
   else
   {
       Console.WriteLine("Invalid date or format");
       return false;
   }
}

或缩短:

public static bool ValidateDate(string date, string format)
{
    DateTime dateTime;
    return DateTime.TryParseExact(date, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTime);
}

答案 3 :(得分:-1)

然后使用这样的东西。

bool isDateTimeValid(string date, string format)
{
    try
    {
        DateTime outDate = DateTime.ParseExact(date, format, Thread.CurrentThread.CurrentUICulture);

        return true;
    }
    catch(Exception exc)
    {
        return false;
    }
}