В Linux я могу найти текущее время в миллисекундах, используя команду:
date +%s%N
но во FreeBSD я получаю только
[13:38 ]#date +%s%N 1299148740N
Как узнать время в миллисекундах (или наносекундах) во FreeBSD?
Команда BSD date не поддерживает миллисекунды.Если вы хотите date с поддержкой миллисекунд, установите пакет GNU coreutils.
date
coreutils
Я сталкивался с этим на OS X, date от BSD.Решением было brew install coreutils и ln -sf /usr/local/bin/gdate $HOME/bin, и убедившись, что $HOME/bin стоит первым в PATH.
brew install coreutils
ln -sf /usr/local/bin/gdate $HOME/bin
$HOME/bin
PATH
Используйте gettimeofday(), например:
gettimeofday()
#include <stdio.h> #include <sys/time.h> int main(void) { struct timeval time_now; gettimeofday(&time_now,NULL); printf ("%ld secs, %ld usecs\n",time_now.tv_sec,time_now.tv_usec); return 0; }
Попробуйте использовать tai64n из daemontools:
tai64n
daemontools
$ echo | tai64n | tai64nlocal 2011-03-03 09:45:37.833010500 $ ps | tai64n | tai64nlocal 2011-03-03 09:52:30.817146500 PID TTY TIME CMD 2011-03-03 09:52:30.817150500 7154 pts/1 00:00:07 bash 2011-03-03 09:52:30.817157500 20099 pts/1 00:00:00 ps 2011-03-03 09:52:30.817159500 20100 pts/1 00:00:00 tai64n 2011-03-03 09:52:30.817162500 20101 pts/1 00:00:00 tai64nlocal
Вот одна строка для любого недавнего Perl:
perl -MTime::HiRes=gettimeofday -MPOSIX=strftime -e '($s,$us) = gettimeofday(); printf "%d.%06d\n", $s, $us' 1487594425.611120
(изменено с этот ответ на аналогичный вопрос)