2011-01-07 20 views
1
c++ (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5 

我將一些源代碼從Windows轉換爲在ubuntu上運行。將源代碼從窗口轉換爲linux

但是,窗口正在使用下面的代碼記錄消息並獲取消息記錄的當前時間。但是,這是windows。將此轉換爲在Linux上運行的最佳方式是什麼?

struct _timeb timebuffer; 
char *timeline; 

_ftime(&timebuffer); 
timeline = ctime(&(timebuffer.time)); 

非常感謝任何建議,

+0

檢查首先將'_ftime'替換爲'ftime',包括time.h和sys/time.h – 9dan 2011-01-07 05:22:48

回答

3
在Linux中有類似的功能 ftime使用的,讓你的時間

#include <sys/timeb.h> 
/* .... */ 
struct timeb tp; 
ftime(&tp); 
printf("time = %ld.%d\n",tp.time,tp.millitm); 

這會給你排在第二和毫秒的時間。

0

窗戶代碼調用ctime,這是可以在Linux上也並準備一個日期 - 時間字符串,如:

"Wed Jun 30 21:49:08 1993\n" 

的手冊頁ctime() Linux上的文件:

char *ctime(const time_t *timep); 
char *ctime_r(const time_t *timep, char *buf); 

因此,您不希望在linux上使用ftime() ...,它會填充緩衝區,該緩衝區不會被ctime()接受。

相反,你可以得到/使用time()功能在使用time_t值:

#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... 
0

使用Boost庫(日期時間)爲您的問題看起來是更多的日期/時間。大多數boost lib是便攜式的。如果您尋找GUI庫QT是再次便攜式黑白windows/* nix的最佳選擇。