获取系统时间:格式(YYYY-MM-DD HH:MM:SS)
一、前言
在写程序时,常常会用到系统时间,如果利用好 ANSI C 基本的库(time.h),输出格式为:YYYY-MM-DD HH:MM:SS 的字符串呢? 若将这个功能写成函数,可以提高代码的复用率。
二、获取系统时间
实现代码:
#include <stdio.h>
#include <time.h>
#include <sys/time.h>
static int lib_system_datetime_string_get(char datetime[256])
{
time_t t;
struct tm *lt;
time(&t);
lt = localtime(&t);
strftime(datetime, 100, "%Y-%m-%d %H:%M:%S", lt);
return 0;
}
/* 时间精确到ms */
static int lib_system_datetime_ms_string_get(char datetime[256])
{
struct tm *tm_t;
struct timeval time;
gettimeofday(&time,NULL);
tm_t = localtime(&time.tv_sec);
if(NULL != tm_t)
{
snprintf(datetime, 50, "%04d-%02d-%02d %02d:%02d:%02d.%03ld",
tm_t->tm_year+1900,
tm_t->tm_mon+1,
tm_t->tm_mday,
tm_t->tm_hour,
tm_t->tm_min,
tm_t->tm_sec,
time.tv_usec/1000);
}
return 0;
}
int main(void)
{
char time_txt[256] = {0};
lib_system_datetime_string_get(time_txt);
printf("%s\n", time_txt);
return 0;
}
运行结果:

三、计算时间差
❤ 实现代码
在Windows环境下:
#include <windows.h>
#include <stdio.h>
#include <time.h>
int main(void)
{
time_t t1, t2;
double diff = 0;
time(&t1);
Sleep(2000);
time(&t2);
diff = difftime(t2, t1);
printf("时间差: %f", diff);
return 0;
}
❤ 运行结果

在Linux环境下实现:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <time.h>
int main(void)
{
time_t time1, time2;
time1 = time((time_t *) NULL);
sleep(3);
time2 = time((time_t *) NULL);
printf("use %.2f s\n", difftime(time2, time1));
exit(0);
}


浙公网安备 33010602011771号