C# 检查字符串是否为正确的日期并将其插入数据库

C# 检查字符串是否为正确的日期并将其插入数据库,c#,date,datetime,C#,Date,Datetime,我将日期的值存储在数据库中 我以以下格式显示当前日期: textBoxTradeDate.Text = DateTime.Now.ToString("yyyy-MM-dd"); 我想把这个日期插入数据库。如何检查其值是否正确?我不想使用正则表达式,我需要在数据库中保存这个textBoxTradeDate.Text。此外,用户必须能够更改此日期,因此我无法存储DateTime.Now并仅显示日期部分 我不想使用日历工具 所以我不能存储日期时间。现在只显示日期部分 使用.NET Framework

我将
日期的值存储在数据库中

我以以下格式显示当前日期:

textBoxTradeDate.Text = DateTime.Now.ToString("yyyy-MM-dd");
我想把这个日期插入数据库。如何检查其值是否正确?我不想使用正则表达式,我需要在数据库中保存这个
textBoxTradeDate.Text
。此外,用户必须能够更改此日期,因此我无法存储
DateTime.Now
并仅显示日期部分

我不想使用
日历
工具

所以我不能存储日期时间。现在只显示日期部分

使用.NET Framework的映射类型。这就是为什么您应该直接插入日期时间值
date
类型列,而此列只保存日期部分

由于您总是将格式化的
DateTime.Now
传递给
textBoxTradeDate.Text
属性,因此您只需传递此
DateTime.Now
值即可直接传递参数化插入查询

如果你想检查你的
textBoxTradeDate.Text
是否是有效的
DateTime
,有
DateTime.Parse
DateTime.TryParse
DateTime.ParseExact
方法,它们正是这个方法的目的

string s = textBoxTradeDate.Text;
DateTime dt;
if(DateTime.TryParseExact(s, "yyyy-MM-dd",
                          CultureInfo.InvariantCulture,
                          DateTimeStyles.None, out dt))
{
    // You have a valid datetime.
}

使用
TryParseExact
,以便可以指定日期格式:

DateTime tradeDate;
bool ok = DateTime.TryParseExact(
  textBoxTradeDate.Text,
  "yyyy-MM-dd",
  CultureInfo.InvariantCulture,
  DateTimeStyles.None,
  out tradeDate
);
if (ok) {
  // correct date, so you can put it in the database
} else {
  // incorrect format, so tell the user
}

您可以使用
DateTime.TryParse()

但如果可能出现问题,则应确保指定预期的日期格式

string datestr = "2001-01-01";
DateTime date;

if (DateTime.TryParse(datestr, out date)) {
    //write date to db
} else {
    //throw an error
}

DateTime.TryParse(输入字符串,输出日期);尝试此操作后,inputString没有
时间
部分。不应该是问题,您遇到了什么错误?是在您尝试写入数据库时发生的吗?