【问题标题】:How do I compare two dates which are stored in string with help of string operator?如何在字符串运算符的帮助下比较存储在字符串中的两个日期?
【发布时间】:2016-07-26 08:36:14
【问题描述】:

我想检查今天的到期日,以便用户登录 这是我的代码

string today = DateTime.Today.ToString("yyyy-MM-dd");
command = new SqlCommand("select * from CompanyRegistered where Comp_Id=" + CompanyRegId, connection);

SqlDataReader dr = command.ExecuteReader();
dr.Read();
DateTime TheDate = dr.GetDateTime(5);


string strDate = TheDate.ToString("yyyy-MM-dd");

//string up=    Convert.ToDateTime(MyReader["AccountExpiry"]).ToString("yyyy-MM-dd");
int result = today.CompareTo(strDate);
if (result > 0)
{
}

【问题讨论】:

  • 日期比较,可以使用"=", ""
  • 为什么要将日期时间转换为字符串进行比较?
  • 为什么不使用 DateTime 而不是 String?
  • 使用 DateTime >

标签: c# date datetime compare


【解决方案1】:
DateTime TheDate = dr.GetDateTime(5);

表示您作为DateTime 存储在数据库中的值。

请不要将其转换为字符串。改为比较 DateTime 值:

DateTime theDate = dr.GetDateTime(5);
DateTime today = DateTime.Today;
if (today > theDate)
{
    ...
}

【讨论】:

    【解决方案2】:

    不要。仅将 strings 用于需要为文本的内容,例如当您想要显示日期时。

    您已经拥有所需的正确值DateTimes,因此您可以比较它们:

    using(SqlDataReader dr = command.ExecuteReader()) 
    {
      if(dr.Read() && !dr.IsDbNull(5)) 
      {
        DateTime userExpiryDate = dr.GetDateTime(5);  
        if (userExpiryDate > DateTime.Today)
        {
          // Do something
        }
      }
    }
    

    旁注:添加一些错误处理 - 您可能无法获得任何记录或 null 值。另外,请查看using - 许多 SQL 类,例如SqlConnection SqlDataReaderIDisposable,因此在使用后需要Dispose()d。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-20
      • 2013-01-24
      • 2013-02-25
      • 1970-01-01
      • 2013-10-31
      • 1970-01-01
      • 2014-11-15
      相关资源
      最近更新 更多