Вот является алгоритм stackoverflow использованием, но переписанный более кратко в погибают псевдокод с исправлением ошибки (не "часы назад"). Функция берет (положительное) количество несколько секунд назад и возвращает человечески-благоприятную строку как "3 часа назад" или "вчера".
agoify($delta)
local($y, $mo, $d, $h, $m, $s);
$s = floor($delta);
if($s<=1) return "a second ago";
if($s<60) return "$s seconds ago";
$m = floor($s/60);
if($m==1) return "a minute ago";
if($m<45) return "$m minutes ago";
$h = floor($m/60);
if($h==1) return "an hour ago";
if($h<24) return "$h hours ago";
$d = floor($h/24);
if($d<2) return "yesterday";
if($d<30) return "$d days ago";
$mo = floor($d/30);
if($mo<=1) return "a month ago";
$y = floor($mo/12);
if($y<1) return "$mo months ago";
if($y==1) return "a year ago";
return "$y years ago";
Эта информация должна быть получена из ОС.
По определению это непереносимо, но существует несколько уровней абстракции ОС. На ум приходит ACE .
Я не могу помочь вам с полным решением, но вот ссылка на мой класс CPULoadMeter, который вы можете использовать для опроса информации об использовании ЦП с течением времени. Он работает под MacOS / X, Windows и Linux (и, возможно, с другими ОС Unixy, которые также имеют / proc / stat, я не знаю). Возможно, вы сможете использовать его в качестве отправной точки.
https://public.msli.com/lcs/muscle/muscle/util/CPULoadMeter.h https://public.msli.com/lcs/muscle /muscle/util/CPULoadMeter.cpp