c++ (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5
我正在将一些源代码从windows转换为在ubuntu上运行。
但是,Windows正在使用以下代码记录消息并获取记录消息的当前时间。但是,这是Windows。将此转换为在linux上运行的最佳方法是什么?
struct _timeb timebuffer;
char *timeline;
_ftime(&timebuffer);
timeline = ctime(&(timebuffer.time));
非常感谢任何建议,
答案 0 :(得分:3)
ftime
,它为你提供了时间
#include <sys/timeb.h>
/* .... */
struct timeb tp;
ftime(&tp);
printf("time = %ld.%d\n",tp.time,tp.millitm);
这将为您提供秒和毫秒的时间。
答案 1 :(得分:0)
Windows代码正在调用ctime
,它也可以在Linux上使用,并准备一个日期时间字符串,例如:
"Wed Jun 30 21:49:08 1993\n"
Linux文档上ctime()
的手册页:
char *ctime(const time_t *timep);
char *ctime_r(const time_t *timep, char *buf);
所以,你不想在linux上使用ftime()
...填充struct timeb
缓冲区,ctime()
不接受。
相反,您可以使用time_t
函数获取/使用time()
值,如下所示:
#include <time.h>
time_t my_time_t;
time(&my_time_t);
if (my_time_t == -1)
// error...
char buffer[26]; // yes - a magic number - see the man page
if (ctime_r(&my_time_t, buffer) == NULL)
// error...
// textual representation of current date/time in buffer...
答案 2 :(得分:0)
使用Boost库(日期时间),因为您的问题更多地是关于日期/时间。大多数boost lib都是可移植的。如果你寻找GUI库,QT是最好的,它是便携式的b / w windows / * nix。