能说会道、可移植、可读的时间

标签 glib

我正在尝试通过 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/

相关文章:

c++ - Visual Studio 2010 上的 GStreamer C++?

c - glib 是否有需要包含的特定库?

c - 使用 GLib 集合删除列表中的重复项

python - 如何将 GStreamer 消息记录到文件中

c - "Correct"使用 GTK 为 g_signal_connect() 进行转换?

c - g_bus_get_sync 返回 NULL 但 dbus_g_bus_get_private 有效

c - 如何清空 GLib 树?

c - 在 C 中使用 glib 函数获取交互式输入

c - 当客户端尝试重新建立连接时,g_io_channel_unix_new() 调用会导致 SIGSEGV

c - 发出 dbus-send 命令后,如何使用 C 调用方法?