/// <summary> /// Adds a value to the specified date. /// </summary> /// <param name="type"> /// The type of date difference that will be added. /// </param> /// <param name="datetime"> /// The date/time. /// </param> /// <param name="value"> /// The value to add. /// </param> /// <returns> /// The <see cref="DateTime"/>. /// </returns> /// <exception cref="Exception"> /// Thrown when an invalid date difference type is provided. /// </exception> private static DateTime DateAdd(DateDiffType type, DateTime datetime, double value) { switch (type) { case DateDiffType.Millisecond: return(datetime.AddMilliseconds(value)); case DateDiffType.Second: return(datetime.AddSeconds(value)); case DateDiffType.Minute: return(datetime.AddMinutes(value)); case DateDiffType.Hour: return(datetime.AddHours(value)); case DateDiffType.Day: return(datetime.AddDays(value)); case DateDiffType.Week: return(datetime.AddDays(value * 7)); case DateDiffType.Month: return(datetime.AddMonths((int)value)); case DateDiffType.Year: return(datetime.AddYears((int)value)); default: throw new Exception("Invalid date diff type."); } }
public string DateDiff(DateDiffType type) { switch (type) { case DateDiffType.Day: return(" DATEDIFF({1},{0}) "); case DateDiffType.Hour: case DateDiffType.Minute: default: throw new NotImplementedException("SQLite DateDiff函数不支持Hour Minute此格式"); } }
/// <summary> /// 时间差 /// </summary> /// <param name="dateStart"></param> /// <param name="dateEnd"></param> /// <param name="type">0:天数,1:月数,2:年数,</param> /// <returns></returns> private static int DateDiff(this DateTime dateStart, DateTime dateEnd, DateDiffType dateDiffType = DateDiffType.Day) { TimeSpan sp = dateEnd.Subtract(dateStart); return(dateDiffType switch { //DateDiffType.Year => sp.Minutes, //DateDiffType.Month => sp.Minutes, DateDiffType.Day => sp.Days, DateDiffType.Hour => sp.Hours, DateDiffType.Minute => sp.Minutes, DateDiffType.Second => sp.Seconds, _ => sp.Days, });
public string DateDiff(DateDiffType type) { switch (type) { case DateDiffType.Day: return(" DATEDIFF(DAY,{0},{1}) "); case DateDiffType.Hour: return(" DATEDIFF(HOUR,{0},{1}) "); case DateDiffType.Minute: return(" DATEDIFF(MINUTE,{0},{1}) "); default: throw new NotImplementedException("DateDiff函数不支持此格式"); } }
/// <summary> /// Calculates the difference between two dates. /// </summary> /// <param name="type"> /// The type of the difference to calculate. /// </param> /// <param name="first"> /// The first date. /// </param> /// <param name="second"> /// The second date. /// </param> /// <returns> /// The difference. /// </returns> /// <exception cref="Exception"> /// Thrown when an invalid date difference type is provided. /// </exception> private static int DateDiff(DateDiffType type, DateTime first, DateTime second) { if (second > first) { var tmp = second; second = first; first = tmp; } switch (type) { case DateDiffType.Millisecond: return((int)(second - first).TotalMilliseconds); case DateDiffType.Second: return((int)(second - first).TotalSeconds); case DateDiffType.Minute: return((int)(second - first).TotalMinutes); case DateDiffType.Hour: return((int)(second - first).TotalHours); case DateDiffType.Day: return((int)(second - first).TotalDays); case DateDiffType.Week: return((int)(second - first).TotalDays / 7); case DateDiffType.Month: return((second.Year - first.Year) * 12 + second.Month - first.Month + (second.Day >= first.Day ? 0 : -1)); case DateDiffType.Year: var years = second.Year - first.Year; return(years - (first > second.AddYears(-years) ? 1 : 0)); default: throw new Exception("Invalid date diff type."); } }
public static int DateDiff(this DateTime left, DateTime right, DateDiffType type = DateDiffType.Day) { if (type == DateDiffType.Year) { return(left.Year - right.Year); } if (type == DateDiffType.Month) { return(((left.Year - right.Year) * 12) + (left.Month - right.Month)); } if (left.Year == right.Year && type == DateDiffType.Week) { return(left.GetWeekOfYear() - right.GetWeekOfYear()); } int days = (int)Math.Floor((left - right).TotalDays); if (type == DateDiffType.Week) { return((int)Math.Floor(days / 7.0)); } return(days); }
public static int DateDiff(DateDiffType type, dynamic startTime, dynamic endTime) { throw new NotImplementedException("SQL解析函数无需实现"); }
public string DateDiff(DateDiffType type) { throw new NotImplementedException("Oracle DateDiff函数不支持此格式"); }
public static int DateDiff(DateDiffType type, DateTime StartTime, DateTime EndTime) { if (StartTime.CompareTo(EndTime) > 0) { return 0; } switch (type) { case DateDiffType.Year: return EndTime.Year - StartTime.Year; case DateDiffType.Month: return Convert.ToInt32((EndTime - StartTime).TotalDays) / 30; case DateDiffType.Day: return Convert.ToInt32((EndTime - StartTime).TotalDays); case DateDiffType.Min: return Convert.ToInt32((EndTime - StartTime).TotalMinutes); case DateDiffType.Second: return Convert.ToInt32((EndTime - StartTime).TotalSeconds); default: return 0; } }
public DateDiff2(DateDiffType type) { this.type = type; }
public DateDiff(DateDiffType type, string compareTo) { this.type = type; this.compareTo = compareTo; }