美好的一天,
通常,如果我想测试字符串是否是有效的日期时间格式,我将使用:
if (DateTime.TryParseExact()){
//do something
}
我想问一下,有没有代码可以直接测试Convert.ToDateTime()是否成功? 例如:
if (Convert.ToDateTime(date1)){
//do something
}
或
if(Convert.ToDateTime(date1) == true){
//do soemthing
}
我的想法是让它成为测试它成功转换到日期时间的bool。 只是试图找出代码而不是使用DateTime.TryParseExact()
答案 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包含在此
中 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;
}
}