2012-03-04 113 views
2

我想通过glib获得时间与微秒,如果可能的话,它也可以在windows上工作。glib,便携式和可读的时间

我的方法:

 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"); 
} 
+0

你的期望是什么?它有什么不同于你的期望? – ptomato 2012-03-06 14:57:15

+0

我只是试图获得便携,可靠和精确的测量操作(和其他目的)所需的时间。我可以在Linux上得到它,但在Windows中(也与GTK),这似乎无法正常工作。这是真的还是我的编程不够好? – 2012-03-09 13:36:21

+1

你需要说_what_不工作,并且_how_你知道它不工作。你的第二个代码示例没有显示出比第一个代码更多的东西 - 它们只是使用'g_get_current_time()'的两个代码示例。 – ptomato 2012-03-09 16:44:15

回答

3

您的便携性最好的拍摄可能会下降GTimeVal,这是在油嘴滑舌过时,对于GDateTime和相关功能。 (g_date_time_format()代替strftime(),g_date_time_new_now()代替g_get_current_time())。

+0

如何用'g_date_time_format()'打印微秒? – tversteeg 2017-03-23 16:56:42