public static double GetWidth(DateTime CurrentTime, DateTime time, TimeUnits timeUnit) { double result = TimeUnitScalar.ConvertToPixels(time, timeUnit); if (timeUnit == TimeUnits.Years) { if (CurrentTime.Year == time.Year) { double DaysInYear = 365d; if (DateTime.IsLeapYear(time.Year)) { DaysInYear = 366; } result *= (double)(DaysInYear - time.DayOfYear + 1) / DaysInYear; } } else if (timeUnit == TimeUnits.Months) { if (CurrentTime.Month == time.Month) { result *= (double)(DateTime.DaysInMonth(time.Year, time.Month) - time.Day + 1) / (double)DateTime.DaysInMonth(time.Year, time.Month); } } else if (timeUnit == TimeUnits.Weeks) { int daysInWeek = 7; int weekCurrent = GetWeekOfYear(CurrentTime); int weekTime = GetWeekOfYear(time); if (weekTime == 52) { daysInWeek = 7; if (DateTime.IsLeapYear(time.Year)) { daysInWeek++; } result *= (double)daysInWeek / 7d; } if (weekTime == 53) { result = 0; } else if (weekCurrent == weekTime) { daysInWeek = 7 - (CurrentTime.DayOfYear - (7 * (weekCurrent - 1))) + 2; result *= (double)daysInWeek / 7d; } } return(result); }
public static double GetPosition(DateTime CurrentTime, DateTime TargetTime) { double result = 0d; TimeSpan ts = TargetTime.Date - CurrentTime.Date; double UnitWidth = TimeUnitScalar.ConvertToPixels(TargetTime, TimeUnits.Ticks); result = (UnitWidth * ts.Ticks); return(result); }