需求分析:有一个广告位,后台添加。需要实现对各个广告期限的判断(一个周期为两个月,距离截止日期15天将予以提醒),因此会有未过期、将过期、和已过期的三种状态。前台页面每次进入时执行该方法,后台进入前也执行该方法。
多重if else的判断,简单的实现该功能。
private void check() { DateTime nowtime = DateTime.Now; string sql = "select pubDate,enddate,zsate,id from [K_U_VaulAdd]"; DataTable dt = KingTop.Common.InfoHelper.ExecuteSQL(sql); for (int i = 0; i < dt.Rows.Count; i++) { DateTime dateEnd = DateTime.Parse(dt.Rows[i]["enddate"].ToString()); if (nowtime < dateEnd) { if (nowtime >= dateEnd.AddDays(-15) && nowtime < dateEnd) { string sqlUp = "update [K_U_VaulAdd] set Zsate=1 where id=" + dt.Rows[i]["id"] + ""; int M = SQLHelper.ExecuteNonQuery(SQLHelper.ConnectionStringLocalTransaction, CommandType.Text, sqlUp, null); } else { string sqlUp = "update [K_U_VaulAdd] set Zsate=0 where id=" + dt.Rows[i]["id"] + ""; int N = SQLHelper.ExecuteNonQuery(SQLHelper.ConnectionStringLocalTransaction, CommandType.Text, sqlUp, null); } } else { string sqlUp = "update [K_U_VaulAdd] set Zsate=2 where id=" + dt.Rows[i]["id"] + ""; int j = SQLHelper.ExecuteNonQuery(SQLHelper.ConnectionStringLocalTransaction, CommandType.Text, sqlUp, null); } } }
简要分析:以当前日期为标准,使用截止日期与之对比。
当前日期等于或大于截止日期为过期 nowtime>=enddate.Addday(-15) sate=2
若不符合上述的条件,几位将过期 sate=1
当前日期小于截止日期为未过期 nowtime<enddate 返回为空(默认值为未过期 sate=0)
仅供参考