Как округлять переменные типа Date

370
28 декабря 2016, 02:09

Есть данные со СКУД. Это время входа и время выхода. Время работы организации с 8 до 17:00 (обед не считаем). Есть переменные - таймаут1 - 25 минут и таймаут2 - 55 минут(ниже объясню зачем они). Надо посчитать фактическое время работы. Время работы организации "Рога и копыта" с 08:00 до 17:00

Допустим человек пришел в 8:01 и ушел в 17:40. Так как он пришел в 8:01 и количество минут 01 < 25(таймаут1),то время входа будет 08:00. Время выхода 17:40. 40 > 25(таймаут1) но меньша 55(таймаут2) - поэтому округляем до 30 (до получаса). Получается что фактическое время работы с 08:00 по 17:30. Это простейший алгоритм и его перенос в код не составит проблем.

Проблемы возникают если во времени прихода или ухода будут часы.
Допустим если человек пришел в 10:25 и ушел в 16:45. Как посчитать его фактическое время?

Answer 1

Как-то так

DateTime time = DateTime.Now;
DateTime rounded = time.AddMilliseconds(-time.Millisecond).AddSeconds(-time.Second);
int minutes = rounded.Minute < 25 ? 0 : rounded.Minute > 55 ? 60 : 30;
rounded = rounded.AddMinutes(minutes - rounded.Minute);

Часы сами увеличатся, если мы добавим 60.

READ ALSO
Значение ИЛИ в регулярном выражении

Значение ИЛИ в регулярном выражении

В html коде встречаются несколько видов

368
Как задать ширину границы формы?

Как задать ширину границы формы?

Есть форма (это пример)Как сделать все границы самой формы уже, кроме верхней? Хотелось бы на выходе получить вот так:

463
Оптимизировать запись в бд. Entity Framework

Оптимизировать запись в бд. Entity Framework

Есть база SQLite, с таблицами - Messages и UsersСодержит примерно 100 000 пользователей

381
Перемещение формы за любую часть

Перемещение формы за любую часть

Как сделать так, чтобы перемещение формы осуществлялось не только за верхнюю границу, а за любую часть данной формы?

477