由于在SQL服务器中,可以直接使用日期格式的字符串相互转化可以比较日期,然而在.NET可否直接进行日期比较呢?答案当然是肯定有的。
见下面代码
strStartDate = this.dtpStartDate.Value.ToString("yyyy-MM-dd");
strEndDate = this.dtpEndDate.Value.ToString("yyyy-MM-dd");
//判断起始日期是否大于终止日期
if (string.CompareOrdinal(strStartDate, strEndDate) > 0)
{
MessageBox.Show("终止日期必须[大于]起始日期!","错误提示!",MessageBoxButtons.OK,MessageBoxIcon.Error);
this.dtpEndDate.Focus();
return;
}
当然主要是把日期数据类型的转换成字符串格进行比较,因为字符串比较主要也是转换成单个字符的比较,当然,这里使用到了string自带的一个比较方法CompareOrdinal()去比较,关于此方法的.NET描述见下,此方法有2个重载函数:
//
// 摘要:
// 通过计算每个字符串中相应 System.Char 对象的数值来比较两个指定的 System.String 对象。
//
// 参数:
// strA:
// 第一个 System.String。
//
// strB:
// 第二个 System.String。
//
// 返回结果:
// 一个整数,指示两个比较数之间的词法关系。 值 条件 小于零 strA 小于 strB。 零 strA 和 strB 相等。 大于零 strA 大于
// strB。
public static int CompareOrdinal(string strA, string strB);
//
// 摘要:
// 通过计算两个指定的 System.String 对象的每个子字符串中相应 System.Char 对象的数值比较子字符串。
//
// 参数:
// strA:
// 第一个 System.String。
//
// indexA:
// strA 中子字符串的起始索引。
//
// strB:
// 第二个 System.String。
//
// indexB:
// strB 中子字符串的起始索引。
//
// length:
// 要比较的子字符串中字符的最大数量。
//
// 返回结果:
// 一个 32 位有符号整数,指示两个比较数之间的词法关系。 值 条件 小于零 strA 中的子字符串小于 strB 中的子字符串。 零 子字符串相等,或者
// length 为零。 大于零 strA 中的子字符串大于 strB 中的子字符串。
//
// 异常:
// System.ArgumentOutOfRangeException:
// indexA 大于 strA。System.String.Length. - 或 - indexB 大于 strB。System.String.Length.
// - 或 - indexA、indexB 或 length 为负。
public static int CompareOrdinal(string strA, int indexA, string strB, int indexB, int length);