我正在尝试通过 glib 获取以微秒为单位的时间,如果可能的话,它也可以在 Windows 上运行。
我的方法:
char buff[256];
GTimeVal mtime;
g_get_current_time(&mtime);
strftime(buff, sizeof(buff), "%Y-%m-%d %H:%M:%S.%%06u", mtime);
printf("%s\n", buff);
...未按预期工作。
如何才能使其正常工作?
谢谢。
[编辑] 第二个例子:
GTimeVal start, finish;
g_get_current_time(&start);
//some operation
g_get_current_time(&finish);
GTimeVal el;
el.tv_sec = finish.tv_sec - start.tv_sec;
el.tv_usec = finish.tv_usec - start.tv_usec;
if (el.tv_usec < 0)
{
el.tv_usec += 1000000;
el.tv_sec--;
}
char st[24] = {0};
char qt[32] = {0};
if (counter)
{
sprintf(st, "%s%d%s", " Finded ", counter, " results");
sprintf(qt, " %u.%06u %s", (guint)el.tv_sec, (guint)el.tv_usec, " sec");
}
最佳答案
为了实现可移植性,最好的办法可能是放弃用于 GDateTime
和相关函数的 GTimeVal
,它在 glib 中已被弃用。 (g_date_time_format()
代替 strftime()
,g_date_time_new_now()
代替 g_get_current_time()
)。
关于能说会道、可移植、可读的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9558964/