C语言time()函数的用法

文章目录

    • time()函数
      • 1. time()函数的用途
      • 2. time()函数的头文件
      • 3. time()函数返回的数据类型
      • 4. time()函数使用示例
    • localtime函数
    • 例子1
    • 例子2
    • 内核的时间打印
    • 参考链接:

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()函数有两种使用方式:

将空指针传递给time()函数,并将time()返回值赋给变量t1

将变量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 200typedef 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);//bzero(timeBuf,BUF_SIZE);//bzero(curDate,sizeof(Time_YMD_HMS));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;// yyyy-MM-dd HH:mm:ssif(curDate->second < 10)sprintf(timeBuf, "%d-%d-%d %d:%d:0%d",curDate->year,curDate->month,curDate->day,curDate->hour,curDate->minute,curDate->second);elsesprintf(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(&current_time);now_time = localtime(&current_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)

本文链接:https://my.lmcjl.com/post/11030.html

展开阅读全文

4 评论

留下您的评论.