C#-字符串未被识别为有效的日期时间
我使用以下方法来验证字符串是否为有效的日期时间:C#-字符串未被识别为有效的日期时间,c#,string,exception,datetime,C#,String,Exception,Datetime,我使用以下方法来验证字符串是否为有效的日期时间: public bool isDate(string date) { bool check = false; try { DateTime converted_date = Convert.ToDateTime(date); check = true; }
public bool isDate(string date)
{
bool check = false;
try
{
DateTime converted_date = Convert.ToDateTime(date);
check = true;
}
catch (Exception)
{
check = false;
}
return check;
}
现在,每当我尝试传递如下字符串时,都会捕获异常“字符串未被识别为有效日期时间”:
“2013年12月31日12:00:00上午”
我无法理解为什么会发生这种情况。有人能帮我解决这个问题吗?很可能您当前的区域设置与中提供的格式日期不同。您可以尝试显式指定区域性:
CultureInfo culture = new CultureInfo("en-US"); // or whatever culture you want
Convert.ToDateTime(date, culture);
尝试DateTime类中的内置TryParse方法,而不是try/catch块。它将字符串作为参数,如果转换成功,它将把值放入“result”变量中。它返回一个布尔值,表示它是否工作
public bool isDate(string date)
{
var result = new DateTime();
return DateTime.TryParse(date, out result);
}
您还可以使用
DateTime.TryParseExact
并传递一个格式字符串(例如MM/dd/yy H:MM:ss zzz
,请参阅更多信息)来检查日期是否具有特定格式。有什么问题吗?将此与Andrei的回答结合起来谢谢:)我正在试验。我会让您知道它是否有效我使用以下约定格式化了日期:DateTime date=(DateTime)DatePicker\u ExpiryDate.Value;字符串到期日=date.ToString(“yyyy-MM-dd-HH':'MM':'ss”);谢谢安德烈:)我正在做一点实验,看看哪一个能得到想要的结果。谢谢:)谢谢Andrei:)我将日期格式化如下:DateTime日期=(DateTime)DatePicker_ExpiryDate.Value;字符串到期日=date.ToString(“yyyy-MM-dd-HH':'MM':'ss”);它现在工作得很好:)@Matthew,另外一种可能的方式是指定日期的精确格式。但我还是建议您检查一下您的区域性设置——奇怪的是,您的代码最初无法工作。