マイクロ秒/ナノ秒単位の時刻の取得
1. [UNIX/Windows] マイクロ秒の表示 – gettimeofday() – <sys/time.h>
・print_time1.c
#include <stdio.h> #include <sys/time.h> int main() { struct timeval now; struct tm *t; gettimeofday(&now, NULL); t = localtime(&now.tv_sec); printf("%04d/%02d/%02d %02d:%02d:%02d.%06ld\n", t->tm_year + 1900, t->tm_mon + 1, t->tm_mday, t->tm_hour, t->tm_min, t->tm_sec, now.tv_usec); return 0; }
$ ./print_time1
2011/07/18 02:50:40.333827
gettimeofday() は廃止予定らしい。
http://archive.linux.or.jp/JM/html/LDP_man-pages/man2/gettimeofday.2.html
>> POSIX.1-2008 では gettimeofday() は廃止予定とされており、代わりに clock_gettime(2) の使用が推奨されている。
2. [UNIX] ナノ秒の表示 – clock_gettime() – <time.h>
・print_time2.c
#include <stdio.h> #include <time.h> int main() { struct timespec now; struct tm *t; clock_gettime(CLOCK_REALTIME, &now); t = localtime(&now.tv_sec); printf("%04d/%02d/%02d %02d:%02d:%02d.%09ld\n", t->tm_year + 1900, t->tm_mon + 1, t->tm_mday, t->tm_hour, t->tm_min, t->tm_sec, now.tv_nsec); return 0; }
$ ./print_time2
2011/07/18 02:50:43.268259848
コンパイルに失敗した場合は、「-lrt」オプションを付け、librt とリンクさせる。
3. [Windows] ミリ秒の表示 – GetLocalTime() – <windows.h>
・print_time3.c
#include <stdio.h> #include <windows.h> int main() { SYSTEMTIME now; GetLocalTime(&now); printf("%04d/%02d/%02d %02d:%02d:%02d.%03d\n", now.wYear, now.wMonth, now.wDay, now.wHour, now.wMinute, now.wSecond, now.wMilliseconds); return 0; }
>.\print_time3.exe
2011/07/18 03:31:53.722
参考:
http://www.bugbearr.jp/?C%E8%A8%80%E8%AA%9E%2F%E6%97%A5%E6%99%82
http://archive.linux.or.jp/JM/html/LDP_man-pages/man2/clock_gettime.2.html
0 件のコメント:
コメントを投稿