У меня есть дата, например, 2019-02-10 20:39:23, и я хочу округлить это время до следующего, кроме 15 минут, до ближайшего. Таким образом, это означает, что следующий должен быть 2019-02-10 21:45:00 или другой пример 21:24:17 должен стать 21:45:00 ... Приведенный ниже код работает нормально, пока у меня нет даты и времени, как 2019-02-10 23:54:20. Тогда следующий округленный должен быть 2019-03-10 00:00:00, но я получаю 2019-02-10 00:00:00.
Вот как я это делаю:
static void Main(string[] args)
{
DateTime dt = DateTime.Parse("2019-02-10 23:54:23");
var interval = TimeSpan.FromMinutes(15);
DateTime last = NextTime(dt, interval);
Console.WriteLine(last);
}
private static DateTime NextTime(DateTime value, TimeSpan interval)
{
var temp = value.Add(new TimeSpan(interval.Ticks / 2));
var time = new TimeSpan((temp.TimeOfDay.Ticks / interval.Ticks) * interval.Ticks);
return value.Date.Add(time);
}
Для вывода я получаю 2019-02-10 00:00:00 вместо 2019-03-10 00:00:00
Не могу понять, почему не переходит на следующий день ...