private static bool TryAddTicks (DateTime date, long ticks, out DateTime result, DateTimeKind kind = DateTimeKind.Unspecified) { var resultTicks = date.Ticks + ticks; if (resultTicks < DateTime.MinValue.Ticks) { result = DateTime.SpecifyKind (DateTime.MinValue, kind); return false; } if (resultTicks > DateTime.MaxValue.Ticks) { result = DateTime.SpecifyKind (DateTime.MaxValue, kind); return false; } result = new DateTime (resultTicks, kind); return true; }