所谓的跨平台是因为使用了不同的API, 用宏定义区别Windows和Unix.
方法如下:
#ifdef WIN32 #define LOCALTIME_R(t) localtime((t)) #else #define LOCALTIME_R(t) localtime_r((t), (struct tm *)&tmres) #endif
如此定义之后, 只需要如下代码即可:
#include <stdio.h> #include <stdio.h> #include <time.h> main() { struct tm *tmNow; time_t long_time; time(&long_time ); /* Get time as long integer. */ tmNow = LOCALTIME_R( &long_time ); /* Convert to local time. */ printf("%d年%d月%d日 %d时%d分%d秒",tmNow->tm_year, tmNow->tm_mon + 1, tmNow->tm_mday, tmNow->tm_hour, tmNow->tm_min, tmNow->tm_sec); return; }
如此即可在windows或Linux下跨平台使用该段代码.
参考: http://topic.csdn.net/t/20031118/17/2468854.html