Как я могу округлить время до ближайших X минут? - PullRequest
139 голосов
/ 11 августа 2011

Есть ли простая функция для округления UP a DateTime до ближайших 15 минут?

* 1006 Е.Г. *

2011-08-11 16:59 становится 2011-08-11 17:00

2011-08-11 17:00 остается как 2011-08-11 17:00

2011-08-11 17:01 становится 2011-08-11 17:15

Ответы [ 11 ]

0 голосов
/ 09 мая 2016

Это простое решение для округления до ближайшей 1 минуты.Он сохраняет информацию о TimeZone и Kind для DateTime.Его можно изменить в соответствии с вашими потребностями (если вам нужно округлить до ближайших 5 минут и т. Д.).

DateTime dbNowExact = DateTime.Now;
DateTime dbNowRound1 = (dbNowExact.Millisecond == 0 ? dbNowExact : dbNowExact.AddMilliseconds(1000 - dbNowExact.Millisecond));
DateTime dbNowRound2 = (dbNowRound1.Second == 0 ? dbNowRound1 : dbNowRound1.AddSeconds(60 - dbNowRound1.Second));
DateTime dbNow = dbNowRound2;
...