Esempio n. 1
0
        /// <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.");
            }
        }
Esempio n. 2
0
        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,
            });
Esempio n. 4
0
        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函数不支持此格式");
            }
        }
Esempio n. 5
0
        /// <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.");
            }
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
 public static int DateDiff(DateDiffType type, dynamic startTime, dynamic endTime)
 {
     throw new NotImplementedException("SQL解析函数无需实现");
 }
Esempio n. 8
0
 public string DateDiff(DateDiffType type)
 {
     throw new NotImplementedException("Oracle DateDiff函数不支持此格式");
 }
Esempio n. 9
0
 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;
     }
 }
Esempio n. 10
0
 public DateDiff2(DateDiffType type)
 {
     this.type = type;
 }
Esempio n. 11
0
 public DateDiff(DateDiffType type, string compareTo)
 {
     this.type      = type;
     this.compareTo = compareTo;
 }