精华内容
下载资源
问答
  • c语言获取当前时间

    万次阅读 2019-03-18 16:21:43
    首先介绍两个函数: (1) int gettimeofday(struct timeval*tv, struct...其参数tv是保存获取时间结果的结构体,参数tz用于保存时区结果: struct timezone{ int tz_minuteswest;/*格林威治时间往西方的时差*/...

    首先介绍两个函数:

    (1) int gettimeofday(struct timeval*tv, struct timezone *tz)

    所属头文件:   <sys/time.h>

    其参数tv是保存获取时间结果的结构体,参数tz用于保存时区结果:

        struct timezone{
            int tz_minuteswest;/*格林威治时间往西方的时差*/
            int tz_dsttime;/*DST 时间的修正方式*/
        };

        timezone 参数若不使用则传入NULL即可。
       

    而结构体timeval的定义为:

        struct timeval{
            long int tv_sec; // 秒数
            long int tv_usec; // 微秒数
        };

    其返回值是从1970-1-1日到现在的的时间,可以精确到微妙级。

    (2)struct tm *localtime_r(const time_t *timep, struct tm *result);(可重入)

    所属头文件 <time.h>

    其中result是保存转换时间结果的结构体

    struct tm的结构为

      int tm_sec;       /* 秒 – 取值区间为[0,59] */
              int tm_min;       /* 分 - 取值区间为[0,59] */
              int tm_hour;      /* 时 - 取值区间为[0,23] */
              int tm_mday;     /* 一个月中的日期 - 取值区间为[1,31] */
              int tm_mon;       /* 月份(从一月开始,0代表一月) - 取值区间为[0,11] */
              int tm_year;        /* 年份,其值等于实际年份减去1900 */
              int tm_wday;      /* 星期 – 取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推 */
              int tm_yday;       /* 从每年的1月1日开始的天数 – 取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推 */
              int tm_isdst;      /* 夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。*/

     

    实例:

    #include<sys/time.h>
    #include<stdio.h>
    #include<time.h>
    #include<stdint.h>
    
    int main()
    {
            struct timeval tv;
            gettimeofday(&tv,NULL);//获取1970-1-1到现在的时间结果保存到tv中
            uint64_t sec=tv.tv_sec;
            uint64_t min=tv.tv_sec/60;
            struct tm cur_tm;//保存转换后的时间结果
            localtime_r((time_t*)&sec,&cur_tm);
            char cur_time[20];
            snprintf(cur_time,20,"%d-%02d-%02d %02d:%02d:%02d",cur_tm.tm_year+1900,cur_tm.tm_mon+1,cur_tm.tm_mday,cur_tm.tm_hour,cur_tm.tm_min,cur_tm.tm_sec);
            printf("current time is %s\n",cur_time);//打印当前时间
    
    }

     

    结果:

    谢谢阅读,欢迎指出错误!!

    展开全文
  • C语言--获取当前时间

    2020-03-25 20:07:00
    C语言获取当前时间 使用C语言的函数接口,获取系统的当前时间,组装成一定格式的字符串 获取系统当前时间 demo #include <stdio.h> #include <time.h> int main(int argc, char *argv[]) { char ...

    C语言–获取当前时间

    使用C语言的函数接口,获取系统的当前时间,组装成一定格式的字符串

    获取系统当前时间 demo

    #include <stdio.h>
    #include <time.h>
    
    int main(int argc, char *argv[]) {
        char len[20] = {0};
    
        time_t timep;
        time(&timep);
    
        struct tm *p;
        p = gmtime(&timep);
    
        snprintf(len, 20, "%d-%d-%d %d:%d:%d", 1900 + p->tm_year, 1 + p->tm_mon, p->tm_mday, 8 + p->tm_hour, p->tm_min, p->tm_sec);
    
        printf("\n%s\n", len);
        return 0;
    }
    

    运行结果:

    baoshaohua:test bao$ ./test 
    
    2020-3-25 9:51:42
    baoshaohua:test bao$ 
    

    获取系统当前时间,时间格式 yyyy-MM-dd HH:mm:ss


    在C语言中,获取日期时间的函数 不只是有这一个,还有其他几种

    1、time(取得目前的时间)

    #include <stdio.h>
    #include <time.h>
    
    
    /**  @brief 
     *   #include <time.h>
     *   
     *   time_t time(time_t *tloc);
     * 
     * 	  The time() function returns the value of time in seconds since 0 hours, 0 minutes, 0 seconds, January 1, 1970, Coordinated Universal Time, without including leap seconds.  
     * 	  If an error occurs, time() returns the value (time_t)-1.
     */
    
    int main(int argc, char *argv[]){
        int sec = time((time_t *)NULL);
        
        //time_t * tloc;
        //int sec = time(tloc);
    
        printf("%d\n", sec);
    
        return 0;
    }
    

    运行结果:

    baoshaohua:test bao$ gcc -o time time.c 
    baoshaohua:test bao$ ./time 
    1585106435
    
    

    此函数会返回从公元 1970 年 1 月 1 日的 UTC 时间从 0 时 0 分 0 秒 算起到现在所经过的秒数。如果 tloc 并非空指针的话,此函数也会将 返回值存到 tloc 指针所指的内存。

    2、ctime(将时间和日期以字符串格式表示)

    #include <stdio.h>
    #include <string.h>
    #include <time.h>
    
    /**
     *  @brief 
     *  #include <time.h>
     *  char * ctime(const time_t *clock); 
     * 
     *  ctime()将参数 clock 所指的 time_t 结构中的信息转换成真实世界 所使用的时间日期表示方法,然后将结果以字符串形态返回。
     *  此函 数已经由时区转换成当地时间,字符串格式为“Wed Jun 30 21 :49 08 1993\n”。若再调用相关的时间日期函数,此字符串可能会被破坏。
     */
    int main(int argc, char *argv[]) {
        int sec = 0;
        char str[30] = {0}; 
        time_t *clock;
        
        //获取时间,保存到time_t结构体中。在time的返回值(sec)里面有全部秒数
        sec = time(clock);
        strcpy(str, ctime(clock)); //将time_t类型的结构体中的时间,按照一定格式保存成字符串,
    
        printf("sec = %d\n", sec);
        printf("str = %s\n", str);
    
        return 0;
    }
    

    运行结果:

    baoshaohua:test bao$ gcc -o ctime ctime.c 
    baoshaohua:test bao$ ./ctime 
    sec = 1585122623
    str = Wed Mar 25 15:50:23 2020
    
    

    这种方式获取到的时间,格式是固定的,不能满足需求。


    3、gmtime(取得目前时间和日期)

    #include <time.h>
    #include <stdio.h>
    
    /**
     * @brief 
     * 
     * #include <time.h>
     * 
     * struct tm * gmtime(const time_t *clock);
     * 
     * gmtime()将参数 clock 所指的 time_t 结构中的信息转换成真实世界 所使用的时间日期表示方法,然后将结果由结构 tm 返回。结构 tm 的定义为:
        struct tm {
            int tm_sec; 
            int tm_min; 
            int tm_hour; 
            int tm_mday; 
            int tm_mon; 
            int tm_year; 
            int tm_wday; 
            int tm_yday; 
            int tm_isdst;
        };
    
    int tm_sec 代表目前秒数,正常范围为 0-59,但允许至 61 秒 
    int tm_min 代表目前分数,范围 0-59
    int tm_hour 从午夜算起的时数,范围为 0-23
    int tm_mday 目前月份的日数,范围 01-31
    int tm_mon 代表目前月份,从一月算起,范围从 0-11
    int tm_year 从 1900 年算起至今的年数
    int tm_wday 一星期的日数,从星期一算起,范围为 0-6
    int tm_yday 从今年 1 月 1 日算起至今的天数,范围为 0-365 int tm_isdst 日光节约时间的旗标 此函数返回的时间日期未经时区转换,而是 UTC 时间。
    
    */
    
    int main(int argc, char *argv[])
    {
        time_t timep;
        time(&timep);
    
        // printf("%s\n", ctime(&timep));
    
        struct tm *p;
        p = gmtime(&timep);
    
        printf("%d\n", p->tm_sec);         /*获取当前秒*/
        printf("%d\n", p->tm_min);         /*获取当前分*/
        printf("%d\n", 8 + p->tm_hour);    /*获取当前时,这里获取西方的时间,刚好相差八个小时*/
        printf("%d\n", p->tm_mday);        /*获取当前月份日数,范围是1-31*/
        printf("%d\n", 1 + p->tm_mon);     /*获取当前月份,范围是0-11,所以要加1*/
        printf("%d\n", 1900 + p->tm_year); /*获取当前年份,从1900开始,所以要加1900*/
        printf("%d\n", p->tm_yday);        /*从今年1月1日算起至今的天数,范围为0-365*/
    
        return 0;
    }
    

    运行结果:

    baoshaohua:test bao$ gcc -o gmtime gmtime.c
    baoshaohua:test bao$ ./gmtime 
    10
    56
    19
    25
    3
    2020
    84
    

    如果需要组成你需要的时间格式,那么就可以借助 snprintf 函数

    展开全文
  • C语言获取当前时间

    千次阅读 2018-03-23 18:17:01
    在介绍利用系统调用获取当前时间之前,先辨析几个基本的概念。API ,系统调用 ,封装例程API只是一个函数定义。系统调用通过软中断向内核发出一个明确的请求。Libc库定义了一些API引用的封装例程,唯一的目的就是...

    操作系统提供了很多系统调用,既方便程序员编程,又提高了程序的可移植性。在介绍利用系统调用获取当前时间之前,先辨析几个基本的概念。

    API ,系统调用 ,封装例程

    • API只是一个函数定义。
    • 系统调用通过软中断向内核发出一个明确的请求。
    • Libc库定义了一些API引用的封装例程,唯一的目的就是发布系统调用。一般每个系统调用对应一个封装例程。
    • API可能提供用户态的服务,如数学函数。一个简单的API可能调用几个系统调用,不同的API也可能调用了同一个系统调用。 C库对time_t, tm的定义

    time.h中time_t, tm的定义

    • time_t 其实就是long数据类型。
    • tm是一个结构体。主要的成员变量是年(相对于1900年的差值),月,日,时,分,秒。

    time.h中函数介绍

    time_t(time_t *timer);

    • Parameter: timer

    • Return Value: Return the time as seconds elapsed since midnight, January 1, 1970, or -1 in the case of an error.

    struct tm *localtime( const time_t *timer );

    • Return Value: localtime returns a pointer to the structure result. If the value in timer represents a date before midnight, January 1, 1970, localtime returns NULL.
    • Parameter: timer Pointer to stored time


    获取时间代码示例

    #include <stdio.h>
     #include <time.h>
     int 
     main(void)
     {
         time_t tt;
         struct tm *t;
         tt = time(NULL);
         t = localtime(&tt);
         printf("time:%d:%d:%d:%d:%d:%d!\n", t->tm_year + 1900, t->tm_mon, t->tm_mday, \
                        t->tm_hour, t->tm_min, t->tm_sec);
             return 0;
     }

    展开全文
  • 获取当前系统的时候,在LInux下验证过,没有问题
  • C语言获取当前的日期及时间

    万次阅读 多人点赞 2018-03-18 10:36:06
    我们在写C语言程序的时候,有的时候会用到读取本机的时间和日期,怎么做呢?其实很简单的,下面简单说一下: C语言中读取系统时间的函数为time(),其函数原型为: #include <time.h> time_t time( time_t *...

    我们在写C语言程序的时候,有的时候会用到读取本机的时间和日期,怎么做呢?其实很简单的,下面简单说一下:

    C语言中读取系统时间的函数为time(),其函数原型为:

    #include <time.h>

    time_t time( time_t * ) ;

    time_t就是long,函数返回从1970年1月1日(MFC是1899年12月31日)0时0分0秒,到现在的的秒数。

    可以调用ctime()函数进行时间转换输出:char * ctime(const time_t *timer);

    将日历时间转换成本地时间,按年月日格式,进行输出,如:Wed Sep 23 08:43:03 2015C语言还提供了将秒数转换成相应的时间结构的函数:

    struct tm * gmtime(const time_t *timer); //将日历时间转化为世界标准时间(即格林尼治时间)

    struct tm * localtime(const time_t * timer); //将日历时间转为本地时间将通过time()函数返回的值,转成时间结构structtm :

    struct tm {int tm_sec; /* 秒 – 取值区间为[0,59] */

    int tm_min; /* 分 - 取值区间为[0,59] */

    int tm_hour; /* 时 - 取值区间为[0,23] */

    int tm_mday; /* 一个月中的日期 - 取值区间为[1,31] */

    int tm_mon; /* 月份(从一月开始,0代表一月) - 取值区间为[0,11] */

    int tm_year; /* 年份,其值等于实际年份减去1900 */

    int tm_wday; /* 星期 – 取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推 */

    int tm_yday; /* 从每年的1月1日开始的天数 – 取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推 */

    int tm_isdst; /* 夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。*/};

    编程者可以根据程序功能的情况,灵活的进行日期的读取与输出了。

    下面给出一段简单的代码:

    #include<time.h>
    int main()
    {
        time_t timep;
        struct tm *p;
        time (&timep);
        p=gmtime(&timep);
        printf("%d\n",p->tm_sec); /*获取当前秒*/
        printf("%d\n",p->tm_min); /*获取当前分*/
        printf("%d\n",8+p->tm_hour);/*获取当前时,这里获取西方的时间,刚好相差八个小时*/
        printf("%d\n",p->tm_mday);/*获取当前月份日数,范围是1-31*/
        printf("%d\n",1+p->tm_mon);/*获取当前月份,范围是0-11,所以要加1*/
        printf("%d\n",1900+p->tm_year);/*获取当前年份,从1900开始,所以要加1900*/
        printf("%d\n",p->tm_yday); /*从今年1月1日算起至今的天数,范围为0-365*/
    }

    参考文献

    https://zhidao.baidu.com/question/558299804.html

    展开全文
  • time_t和struct tm在C语言中用time_t类型表示一个时间,通常它是一个和long一样长的整数,也就是说,在32位环境下,它是4字节,在64位环境下,它是8字节。它保存的就是一个整数值,表示了从1970-01-01 08:00:00到其...
  • 当前位置:我的异常网» C语言»C语言获取系统时间的几种形式C语言获取系统时间的几种形式www.myexceptions.net网友分享于:2013-10-10浏览:121次C语言获取系统时间的几种方式C语言获取系统时间的几种方式2012年01月...
  • Linux下C语言实现获取当前时间

    千次阅读 2018-08-08 12:17:39
    C语言获取当前时间 简介 在工作中,经常涉及到获取当前时间,用于写日志,基于此,今特意利用C语言写一个获取时间函数,用于后面用到时,能够及时查到。获取当前时间,要用到 具体实现 程序实现 #include &...
  • #include "stdio.h" #include "time.h" int get_local_time(char *s_tm) { time_t stime; struct tm *stm = NULL; time(&stime); stm = localtime(&stime); if (!... err_set(ERR_ERR...
  • C语言获取系统当前时间 ...now)函数获取当前时间距1970年1月1日的秒数,以秒计数单位。 localtime ( &rawtime ); -- 转为当地时间,tm 时间结构 比如获取当前年份: int iyear = 0; int sysyear =...
  • 需要利用C语言的时间函数time和localtime,具体说明如下:一...这个函数会获取当前时间,并返回。 如果参数__timer非空,会存储相同值到__timer指向的内存中。 time函数返回的为unix时间戳,即从1970年1月1日(UTC...
  • C语言获取当前系统时间

    千次阅读 2014-11-03 11:00:12
    //获取当前系统时间 time_t tTime;//距1900年1月1日的秒数 char str[80]; struct tm* stTim;//时间结构 time(&tTime); stTim = localtime(&tTime); strftime(str,sizeof(str),"%Y%m%d%T",stTim);//格式化时间...
  • C语言获取当前日期及时间

    千次阅读 2017-12-03 22:54:01
    #include main() { time_t timep; struct tm *p; time (&timep); p=gmtime(&timep); printf("%d\n",p->tm_sec); /*获取当前秒*/ printf("%d\n",p->tm_min); /*获取当前分*/ .../*获取当前时,这里获取西方的时间,刚好相
  • 时间有关的函数定义在头文件”time.h”中 常用函数: time_t time(time_t *t); 函数说明:此函数会返回从公元 1970 年1 月1 日的UTC 时间从0 时0 分0 秒算起到现在所经过的秒数。如果t 并非空指针的话...
  • 获取当前系统时间的简短代码,一个简单的C语言代码,并且有一定的知识点,很好玩的
  • C语言中自动获取当前时间和日期

    千次阅读 2017-09-23 13:18:26
    C语言中自动获取当前时间和日期代码#include #include<time.h> void main() { time_t t; struct tm *p; time(&t); p=localtime(&t); printf("%d-%d-%d %d:%d:%d",1900+p->tm_year,1+p->tm_mon,p->tm_md
  • c语言获取系统当前时间

    千次阅读 2018-04-10 16:46:50
    你发现p->tm_hour加上了8,是因为windows下获取时间的小时数相差8小时 另外,获取想要获取星期的话,可以在代码加上二维数组 char *wday[] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" }; 然后输出 wday...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 389
精华内容 155
关键字:

获取当前时间c语言

c语言 订阅