time()函数
1. time()函数的用途
time_t time(time_t *t);
函数说明:此函数会返回从公元1970年1月1日的UTC时间从0时0分0秒算起到现在所经过的秒数(即格林尼治时间1970年1月1日00:00:00到当前时刻的时长,时长单位是秒)。如果t并非空指针的话,此函数也会将返回值存在t指针所指的内存。 返回值:成功则返回秒数,失败则返回((time_t)-1)值,错误原因存于error中。
从声明中可以看出,time()函数返回值的数据类型是time_t。传递给time()函数的参数是指向time_t数据类型的指针。
2. time()函数的头文件
要使用time(),必须在程序中包含 ##include <time.h> 头文件。
3. time()函数返回的数据类型
下面是从<time.h>文件中找到的函数声明:
time_t time(time_t *t)
time(time_t *t)
从声明中可以看出,time()函数返回值的数据类型是 time_t 。传递给time()函数的参数是指向time_t数据类型的指针。
4. time()函数使用示例
time()函数有两种使用方式:
(1) t1=time(NULL)或t1=time(0)
将空指针传递给time()函数,并将time()返回值赋给变量t1
(2) time(&t2);
将变量t2的地址作为实参传递给time()函数,函数自动把结果传递给t2,不需要额外的赋值语句。 示例代码:
#include <stdio.h>
#include <time.h>
int main()
{
time_t t1,t2;
t1=time(0);
time(&t2);
printf("t1=%ld\n",t1);
printf("t2=%ld",t2);
return 0;
}
localtime函数
struct tm* localtime(const time_t *timep);
函数说明:localtime()将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果由结构tm返回。结构tm的定义可以参考gmtime()。此函数返回的时间日期已经转换成当地时区。 返回值:返回结构tm代表目前的当地时间。
例子1
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define BUF_SIZE 200
typedef struct {
int year;
int month;
int day;
int hour;
int minute;
int second;
}Time_YMD_HMS;
char* getNowTime()
{
Time_YMD_HMS *curDate =(Time_YMD_HMS *)malloc(sizeof(Time_YMD_HMS));
char *timeBuf =(char *)malloc(BUF_SIZE);
memset(timeBuf,0,BUF_SIZE);
memset(curDate,0,sizeof(Time_YMD_HMS));
time_t now;
struct tm *timeNow;
time(&now);
timeNow = localtime(&now);
curDate->year=timeNow->tm_year+1900;
curDate->month=timeNow->tm_mon+1;
curDate->day=timeNow->tm_mday;
curDate->hour=timeNow->tm_hour;
curDate->minute=timeNow->tm_min;
curDate->second=timeNow->tm_sec;
if(curDate->second < 10)
sprintf(timeBuf, "%d-%d-%d %d:%d:0%d",curDate->year,curDate->month,curDate->day,
curDate->hour,curDate->minute,curDate->second);
else
sprintf(timeBuf, "%d-%d-%d %d:%d:%d",curDate->year,curDate->month,curDate->day,
curDate->hour,curDate->minute,curDate->second);
free(curDate);
return timeBuf;
}
int main()
{
while (1)
{
printf("%s \n",getNowTime());
}
return 0;
}
例子2
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
void gettime(char *cur_time) {
char Year[6] = {0};
char Month[4] = {0};
char Day[4] = {0};
char Hour[4] = {0};
char Min[4] = {0};
char Sec[4] = {0};
time_t current_time;
struct tm* now_time;
time(¤t_time);
now_time = localtime(¤t_time);
strftime(Year, sizeof(Year), "%Y-", now_time);
strftime(Month, sizeof(Month), "%m-", now_time);
strftime(Day, sizeof(Day), "%d ", now_time);
strftime(Hour, sizeof(Hour), "%H:", now_time);
strftime(Min, sizeof(Min), "%M:", now_time);
strftime(Sec, sizeof(Sec), "%S", now_time);
strncat(cur_time, Year, 5);
strncat(cur_time, Month, 3);
strncat(cur_time, Day, 3);
strncat(cur_time, Hour, 3);
strncat(cur_time, Min, 3);
strncat(cur_time, Sec, 3);
}
int main() {
char *cur_time = (char *)malloc(21*sizeof(char));
gettime(cur_time);
printf("Current time: %s\n", cur_time);
free(cur_time);
cur_time = NULL;
return 0;
}
内核的时间打印
void sundp_get_time()
{
struct tm tm1;
time_t local_time1;
local_time1 = ktime_get_real_seconds();
time64_to_tm(local_time1, -sys_tz.tz_minuteswest * 60, &tm1);
tm1.tm_year += 1900;
tm1.tm_mon += 1;
tm1.tm_mday += 2;
uvc_printk(KERN_INFO, "sundp_ %d_%d_%d %d:%d.%d ",tm1.tm_year,tm1.tm_mon,tm1.tm_mday,tm1.tm_hour,tm1.tm_min,tm1.tm_sec);
}
参考链接:
获取当前时间,要用到time.h中的time()和localtime()函数,二者具体介绍与使用,参见: C中时间/环境/终端控制相关函数 c语言time()函数用法,参见: C语言time()函数的用法 c++时间结构体(time_t和tm)
|