public static void Main()
DateTime time = new DateTime(2020, 10, 20, 0, 0, 0, 0);
TimeSpan span = TimeSpan.FromMilliseconds(999);
DateTime roundedUp = time.AddMilliseconds(999* - (time.Ticks) % 999);
Console.WriteLine($"{span.Ticks}");
Console.WriteLine($"{time}");
Console.WriteLine($"{time.Ticks}");
Console.WriteLine($"{time.Millisecond}");
Console.WriteLine($"{roundedUp}");
Console.WriteLine($"{roundedUp.Ticks}");
Console.WriteLine($"{roundedUp.Millisecond}");
public static DateTime TimeUp(DateTime time, TimeSpan span)
long ticks = time.AddTicks(span.Ticks - time.Ticks % span.Ticks).Ticks;
return new DateTime(ticks, time.Kind);
public static DateTime RoundUp1(DateTime time, TimeSpan span)
return new DateTime((time.Ticks + span.Ticks - 1) / span.Ticks * span.Ticks, time.Kind);
public static DateTime RoundUp(DateTime time, TimeSpan interval)
if (interval == TimeSpan.Zero)
return new DateTime(((time.Ticks + interval.Ticks - 1) / interval.Ticks) * interval.Ticks);