/// <summary> /// 将SmartDate实例与SmartDate实例、DateTime实例、string实例进行相等比较, /// 相等返回true. /// </summary> /// <param name="obj">要比较的对象</param> public override bool Equals(object obj) { //如果是与SmartDate实例比较 if (obj is SmartDate) { //将要比较的对象转换为SmartDate SmartDate temp = (SmartDate)obj; if (this.IsEmpty && temp.IsEmpty) { //如果两个实例都为空,返回true return(true); } else { //比较两个实例的DateTime值 return(this.Date.Equals(temp.Date)); } } //如果是与DateTime实例进行比较 if (obj is DateTime) { return(this.Date.Equals((DateTime)obj)); } //如果是与字符串进行比较 if (obj is string) { return(this.CompareTo(obj.ToString()) == 0); } return(false); }
/// <summary> /// 原始日期减去一个结束日期,返回一个时间间隔 /// </summary> /// <param name="startTime">原始日期</param> /// <param name="finishTime">结束日期</param> public static TimeSpan operator -(DateTime startTime, SmartDate finishTime) { //将原始日期转成SmartDate类型 SmartDate time = new SmartDate(startTime); return(time.Subtract(finishTime.Date)); }
/// <summary> /// 比较当前日期与指定日期的大小。 /// 如果相等则返回0; /// 如果当前日期大于指定日期,则返回1; /// 如果当前日期小于指定日期,则返回-1; /// </summary> /// <param name="value">要比较的日期</param> public int CompareTo(SmartDate value) { if (this.IsEmpty && value.IsEmpty) { return(0); } else { return(_date.CompareTo(value.Date)); } }
/// <summary> /// 判断字符串是否能转换为一个SmartDate日期,并返回转换成功后的日期 /// </summary> /// <param name="value">要转换的日期字符串</param> /// <param name="emptyValue">空日期的取值类型</param> /// <param name="result">返回转换成功后的日期</param> public static bool TryParse(string value, EmptyValue emptyValue, ref SmartDate result) { //定义用于存储日期字符串转换的DateTime日期 DateTime dateResult = _minDate; //将日期字符串转换为DateTime日期 if (TryStringToDate(value, emptyValue, ref dateResult)) { //如果转换成功,则返回该日期的SmartDate类型 result = new SmartDate(dateResult, emptyValue); return(true); } else { return(false); } }
/// <summary> /// 判断字符串是否能转换为一个SmartDate日期,并返回转换成功后的日期, /// 如果字符串为空,则返回一个最小日期。 /// </summary> /// <param name="value">要转换的日期字符串</param> /// <param name="result">返回转换成功后的日期</param> public static bool TryParse(string value, ref SmartDate result) { return(TryParse(value, EmptyValue.MinDate, ref result)); }
/// <summary> /// 比较当前日期与指定日期的大小。 /// 如果相等则返回0; /// 如果当前日期大于指定日期,则返回1; /// 如果当前日期小于指定日期,则返回-1; /// </summary> /// <param name="value">要比较的日期</param> public int CompareTo(SmartDate value) { if (this.IsEmpty && value.IsEmpty) { return 0; } else { return _date.CompareTo(value.Date); } }
/// <summary> /// 判断字符串是否能转换为一个SmartDate日期,并返回转换成功后的日期 /// </summary> /// <param name="value">要转换的日期字符串</param> /// <param name="emptyValue">空日期的取值类型</param> /// <param name="result">返回转换成功后的日期</param> public static bool TryParse(string value, EmptyValue emptyValue, ref SmartDate result) { //定义用于存储日期字符串转换的DateTime日期 DateTime dateResult = _minDate; //将日期字符串转换为DateTime日期 if (TryStringToDate(value, emptyValue, ref dateResult)) { //如果转换成功,则返回该日期的SmartDate类型 result = new SmartDate(dateResult, emptyValue); return true; } else { return false; } }
/// <summary> /// 判断字符串是否能转换为一个SmartDate日期,并返回转换成功后的日期, /// 如果字符串为空,则返回一个最小日期。 /// </summary> /// <param name="value">要转换的日期字符串</param> /// <param name="result">返回转换成功后的日期</param> public static bool TryParse(string value, ref SmartDate result) { return TryParse(value, EmptyValue.MinDate, ref result); }
/// <summary> /// 原始日期减去一个结束日期,返回一个时间间隔 /// </summary> /// <param name="startTime">原始日期</param> /// <param name="finishTime">结束日期</param> public static TimeSpan operator -(DateTime startTime, SmartDate finishTime) { //将原始日期转成SmartDate类型 SmartDate time = new SmartDate(startTime); return time.Subtract(finishTime.Date); }