Как рассчитать временной интервал из отметок времени? - PullRequest
0 голосов
/ 29 июня 2009

У меня на работе довольно интересное задание - мне нужно выяснить, сколько времени пользователь потратил на выполнение чего-либо, и все, что у меня есть, это временные метки его сбережений. Я точно знаю, что пользователь сохраняет после каждой небольшой части работы, поэтому они не далеко друг от друга.

Очевидным решением было бы выяснить, сколько времени может занять один маленький элемент, а затем просто пройти через отсортированные временные метки, и если разница между текущей и предыдущей больше, это означает, что у пользователя был перерыв на кофе, и если оно меньше, мы можем просто сложить эту разницу в общую сумму. Простой пример кода для иллюстрации этого:

var prev_timestamp = null;
var total_time = 0;
foreach (timestamp in timestamps) {
    if (prev_timestamp != null) {
         var diff = timestamp - prev_timestamp;
         if (diff < threshold) {
              total_time += diff;
         }
    }
    prev_timestamp = timestamp;
}

Проблема в том, что, хотя я знаю, сколько времени тратится на одну маленькую порцию, я не хочу зависеть от этого. Что, если какой-то пользователь будет намного медленнее, чем мои прогнозы, я не хочу, чтобы он остался без зарплаты. Поэтому я подумал, может ли быть какое-нибудь умное математическое решение этой проблемы, которое могло бы работать без знания того, какой интервал времени является приемлемым?

PS. Извините за недоразумение, конечно, никто не будет платить людям, основываясь на этих цифрах, и даже если они будут, они понимают, что это только приблизительное. Но я бы хотел найти решение, которое бы излучало числа, максимально приближенные к реальной жизни.

Ответы [ 4 ]

5 голосов
/ 29 июня 2009

Вы можете получить медиану TimeSpan, а затем отбросить те TimeSpans, которые отключены, скажем,> 50%.

Но этот алгоритм должен ИМХО использоваться только для получения приблизительного количества потраченных часов на проект, не для заработной платы.

2 голосов
/ 29 июня 2009

Вам нужно либо взглянуть на стандартное отклонение для группы всех пользователей, либо на дисперсию в интервалах для одного пользователя или, что лучше, их комбинацию для вашего образца. установлен.

1 голос
/ 29 июня 2009

Умная математика, которую вы ищете, называется «стандартное отклонение».

1 голос
/ 29 июня 2009

Схватить все периоды и посмотреть на среднее? Если некоторые из них находятся далеко за пределами среднего диапазона, вы можете отказаться от них или использовать для них скорректированное значение в среднем.

Я согласен с Groo, что использование чего-либо, основанного только на отметке времени «save», НЕ является тем, что вам следует делать - оно НИКОГДА не предоставит вам фактическое время, потраченное на выполнение задач.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...