public long DateDiff(c.DateInterval intervalType, DateTime dateOne, DateTime dateTwo) { switch (intervalType) { case c.DateInterval.Day: case c.DateInterval.DayOfYear: TimeSpan spanForDays = dateTwo - dateOne; return((long)spanForDays.TotalDays); case c.DateInterval.Hour: TimeSpan spanForHours = dateTwo - dateOne; return((long)spanForHours.TotalHours); case c.DateInterval.Minute: TimeSpan spanForMinutes = dateTwo - dateOne; return((long)spanForMinutes.TotalMinutes); case c.DateInterval.Month: return(((dateTwo.Year - dateOne.Year) * 12) + (dateTwo.Month - dateOne.Month)); case c.DateInterval.Quarter: long dateOneQuarter = (long)Math.Ceiling(dateOne.Month / 3.0); long dateTwoQuarter = (long)Math.Ceiling(dateTwo.Month / 3.0); return((4 * (dateTwo.Year - dateOne.Year)) + dateTwoQuarter - dateOneQuarter); case c.DateInterval.Second: TimeSpan spanForSeconds = dateTwo - dateOne; return((long)spanForSeconds.TotalSeconds); case c.DateInterval.Weekday: TimeSpan spanForWeekdays = dateTwo - dateOne; return((long)(spanForWeekdays.TotalDays / 7.0)); case c.DateInterval.WeekOfYear: DateTime dateOneModified = dateOne; DateTime dateTwoModified = dateTwo; while (dateTwoModified.DayOfWeek != DateTimeFormatInfo.CurrentInfo.FirstDayOfWeek) { dateTwoModified = dateTwoModified.AddDays(-1); } while (dateOneModified.DayOfWeek != DateTimeFormatInfo.CurrentInfo.FirstDayOfWeek) { dateOneModified = dateOneModified.AddDays(-1); } TimeSpan spanForWeekOfYear = dateTwoModified - dateOneModified; return((long)(spanForWeekOfYear.TotalDays / 7.0)); case c.DateInterval.Year: return(dateTwo.Year - dateOne.Year); default: return(0); } }
public long DateDiff(c.DateInterval intervalType, string sDateOne, string sDateTwo) { DateTime t1; DateTime t2; if (!IsDate2(sDateOne) || !IsDate2(sDateTwo)) { return(0); } t1 = StringToDate(sDateOne); t2 = StringToDate(sDateTwo); return(DateDiff(intervalType, t1, t2)); }