public static double DateTimeDiff(this DateTime startDate, DateTime endDate, DateTimeDiffCompareType howToCompare) { double diff; try { var timeSpan = new TimeSpan(endDate.Ticks - startDate.Ticks); diff = howToCompare switch { DateTimeDiffCompareType.Ticks => Convert.ToDouble(timeSpan.Ticks), DateTimeDiffCompareType.Milliseconds => Convert.ToDouble(timeSpan.TotalMilliseconds), DateTimeDiffCompareType.Seconds => Convert.ToDouble(timeSpan.TotalSeconds), DateTimeDiffCompareType.Minutes => Convert.ToDouble(timeSpan.TotalMinutes), DateTimeDiffCompareType.Hours => Convert.ToDouble(timeSpan.TotalHours), DateTimeDiffCompareType.Days => Convert.ToDouble(timeSpan.TotalDays), DateTimeDiffCompareType.Year => Convert.ToDouble(timeSpan.TotalDays / 365), DateTimeDiffCompareType.Quartal => Convert.ToDouble(timeSpan.TotalDays / 365 / 4), _ => Convert.ToDouble(timeSpan.TotalDays), }; } catch { diff = -1; } return(diff); }
public void DateTimeDiff(double expected, int seconds, DateTimeDiffCompareType dateTimeDiffCompareType) { // Arrange var inputA = new DateTime(1970, 1, 1, 0, 0, 0); var inputB = new DateTime(1970, 1, 1, 0, 0, seconds); // Act var actual = inputA.DateTimeDiff(inputB, dateTimeDiffCompareType); // Assert Assert.Equal(expected, actual); }