Лучший способ представить продолжительность времени в записи журнала - PullRequest
1 голос
/ 17 февраля 2012

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

На английском языке вы бы предпочли представить время, затраченное на выполнение задачи в различных временных числах?

У меня сейчас есть,

Log("Finished in {0}ms, {1}s, {2}m.", ts.TotalMilliseconds, ts.TotalSeconds, ts.TotalMinutes);

Какие выходы,

2012-02-16 @ 20: 12: 33: Закончено в 2007 г. 8125 мс, 2,0078125 с, 0,0334635416666667 м.

Какие лучшие способы вы можете предложить?

Cheers, П.

Спасибо, Ксено, окончательный код:

Log(string.Concat("Finished in ", (ts.Hours > 0 ? ts.Hours + "h " : string.Empty),
                                    (ts.Minutes > 0 ? ts.Minutes + "m " : string.Empty),
                                    (ts.Seconds > 0 ? ts.Seconds + "s " : string.Empty),
                                    (ts.Milliseconds > 0 ? ts.Milliseconds + "ms " : string.Empty),
                                    ("(" + ts.TotalMilliseconds.ToString("0.000") + ")")));

Ответы [ 5 ]

3 голосов
/ 17 февраля 2012

Как насчет:

0h 0m 2s 7.815ms

Поскольку это универсальный регистратор, это было общее предложение

Лучший способ - дать пользователю способ определить это в файле конфигурациипо крайней мере программно во время инициализации

2 голосов
/ 17 февраля 2012

Мое личное предпочтение - использовать какой-то стандарт .Потому что они являются стандартными и легко разбираются позже.

Например, HTTP / 1.1 Формат даты / времени , который дает любой из следующих форматов.

  Sun, 06 Nov 1994 08:49:37 GMT  ; RFC 822, updated by RFC 1123
  Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036
  Sun Nov  6 08:49:37 1994       ; ANSI C's asctime() format

Вдольс этим лучше хранить Unix Timestamp .Его всегда удобно.

Наконец, укажите длительность в миллисекундах .Если у вас есть миллисекунды, вы можете преобразовать его в любую другую более высокую единицу.Однако, если вы хотите, чтобы кто-то еще прочитал, поместите его в HH:MM:SS.fff или аналогичный формат.Этот формат легче понять.

1 голос
/ 17 февраля 2012

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

0 голосов
/ 17 февраля 2012

Если оно будет варьироваться между миллисекундами и часами, тогда я буду придерживаться последовательной, но знакомой записи:

HH:mm:ss.fff
0 голосов
/ 17 февраля 2012

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

...