您的位置:首页 > 运维架构 > Linux

linux下gettimeofday函数windows替换方案

2015-06-13 13:49 453 查看
链接:http://blog.sina.com.cn/s/blog_48526a5f0100iqyn.html

#include <time.h>

#ifdef WIN32

# include <windows.h>

#else

# include <sys/time.h>

#endif

#ifdef WIN32

int

gettimeofday(struct timeval *tp, void *tzp)

{

time_t clock;

struct tm tm;

SYSTEMTIME wtm;

GetLocalTime(&wtm);

tm.tm_year = wtm.wYear - 1900;

tm.tm_mon = wtm.wMonth - 1;

tm.tm_mday = wtm.wDay;

tm.tm_hour = wtm.wHour;

tm.tm_min = wtm.wMinute;

tm.tm_sec = wtm.wSecond;

tm. tm_isdst = -1;

clock = mktime(&tm);

tp->tv_sec = clock;

tp->tv_usec = wtm.wMilliseconds * 1000;

return (0);

}

#endif



#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#include "gettimewin.h"

#ifdef WIN32

# include <windows.h>

#else

# include <sys/time.h>

#endif

int gettimeofday(struct timeval *tp, void *tzp);

#if defined(_MSC_VER) && !defined(snprintf)

#define snprintf _snprintf

#endif

int main(int argc, char *argv[])

{

struct timeval tv;

char buf[] = "1970-01-01 00:00:00.000";

struct tm *newtime;

char log_name[128];

char log_time[128];

time_t lt;

time(<);

newtime = localtime(<);

strftime( log_name, 128, "%Y%m%d", newtime);

strftime( log_time,128,"%Y-%m-%d %H:%M:%S",newtime);



printf("%s\n", log_name);

printf("%s\n", log_time);

(void)gettimeofday(&tv, 0);

newtime = localtime(&(time_t(tv.tv_sec)));

(void)strftime(buf, sizeof(buf) - 1, "%Y-%m-%d %H:%M:%S.000",

(localtime(&tv.tv_sec)));



(void)snprintf(buf + 20, 3, "%03d", (int)(tv.tv_usec / 1000));

(void)printf("%s\n", buf);

return (0);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: