检查String是否是正确的日期并将其插入数据库

时间:2015-03-08 11:07:02

标签: c# date datetime

我存储在date的数据库值中。

我以格式显示当前日期:

textBoxTradeDate.Text = DateTime.Now.ToString("yyyy-MM-dd");

我想将此日期插入数据库。如何检查它是否合适?我不想使用正则表达式,我需要将此textBoxTradeDate.Text保存在数据库中。此外,用户必须能够更改此日期,因此我无法存储DateTime.Now并且只显示日期部分。

我不想使用Calendar工具。

3 个答案:

答案 0 :(得分:4)

使用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
}

答案 1 :(得分:2)

您可以使用DateTime.TryParse()

但是如果有可能出现问题,你应该确保指定预期的日期格式。

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

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

答案 2 :(得分:1)

  

所以我不能存储DateTime.Now并且只显示日期部分。

带有映射SQL Server's date type类型的.NET Framework的

DateTime。这就是您应该直接插入日期时间值 date类型列的原因,此列保存日期部分。

由于您始终将格式化的DateTime.Now传递给textBoxTradeDate.Text属性,因此您可以直接将此DateTime.Now值传递给参数化插入查询。

如果您想检查textBoxTradeDate.Text是否有效DateTime,则有DateTime.ParseDateTime.TryParseDateTime.ParseExactDateTime.TryParseExact方法正是这个。

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