time()提供了秒级的精确度
1、头文件 <time.h>
2、函数原型
time_t time(time_t * timer)
函数返回从UTC1970-1-1 0:0:0开始到现在的秒数
用time()函数结合其他函数(如:localtime)可以获得当前系统时间或是标准时间。
C 库函数 struct tm *localtime(const time_t *timer) 使用 timer 的值来填充 tm 结构。timer 的值被分解为 tm 结构,并用本地时区表示。
_ftime()提供毫秒级的精确度
1、头文件 <sys/types.h> and <sys/timeb.h>
2、函数原型
void _ftime(struct _timeb *timeptr);
参数说明:
struct _timeb
{
time_t time;
unsigned short millitm;
short timezone;
short dstflag;
};
GetLocalTime是一个Windows API 函数,用来获取当地的当前系统日期和时间。
代码:
void testTimeFmt()
{
//-------------------------------------------------------------
char strCurrTimeFmt[256];
time_t nTime;
struct tm *stTm;
struct _timeb timebuffer;
//-------------------------------------------------------------
char strCurrTime[256];
SYSTEMTIME currentTime;
//-------------------------------------------------------------
char strCurrDateFmt[256];
char* pAddr = NULL;
//-------------------------------------------------------------
printf("--------- funcname = %s ---------\n", __func__);
//init
memset(strCurrTimeFmt, 0, sizeof(strCurrTimeFmt));
memset(strCurrTime, 0, sizeof(strCurrTime));
memset(strCurrDateFmt, 0, sizeof(strCurrDateFmt));
GetLocalTime(¤tTime);
nTime = time(NULL); //获取系统时间,单位为秒;这一句也可以改成time(&timer);
stTm = localtime((const time_t *)&nTime);//转换成tm类型的结构体;
_ftime(&timebuffer);
sprintf(strCurrTimeFmt, "%04d/%02d/%02d %02d:%02d:%02d.%03d",
1900 + stTm->tm_year, stTm->tm_mon + 1, stTm->tm_mday,
stTm->tm_hour, stTm->tm_min, stTm->tm_sec,
timebuffer.millitm);
sprintf(strCurrTime, "%u/%02u/%02u %02u:%02u:%02u.%03u",
currentTime.wYear, currentTime.wMonth, currentTime.wDay,
currentTime.wHour, currentTime.wMinute, currentTime.wSecond,
currentTime.wMilliseconds);
memcpy(strCurrDateFmt, strCurrTime, sizeof(strCurrDateFmt));
pAddr = strtok(strCurrDateFmt, " ");
printf("%s\n", strCurrTimeFmt);
printf("%s\n", strCurrTime);
printf("%s\n", pAddr);
}