精华内容
下载资源
问答
  • time函数

    千次阅读 2012-01-08 16:36:56
    函数用途 函数名 得到处理器时间 clock 得到时间差 difftime 设置时间 mktime 得到时间 time 得到以ASCII码表示的时间 asctime 得到字符串表示的时间 ctime 得到指定格式的时间 strftime 摘要: 本文从介绍...
     
    

    C/C++中的日期和时间

    头文件 time.h

    函数用途 函数名

    得到处理器时间 clock

    得到时间差 difftime

    设置时间 mktime

    得到时间 time

    得到以ASCII码表示的时间 asctime

    得到字符串表示的时间 ctime

    得到指定格式的时间 strftime

    摘要:

    本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构和函数,并对计时、时间的获取、时间的计算和显示格式等方面进行了阐述。本文还通过大量的实例向你展示了time.h头文件中声明的各种函数和数据结构的详细使用方法。

    关键字:

    UTC(世界标准时间),CalendarTime(日历时间),epoch(时间点),clock tick(时钟计时单元)

    1.概念

    在C/C++中,对字符串的操作有很多值得注意的问题,同样,C/C++对时间的操作也有许多值得大家注意的地方。最近,在技术群中有很多网友也多次问到 过C++语言中对时间的操作、获取和显示等等的问题。下面,在这篇文章中,笔者将主要介绍在C/C++中时间和日期的使用方法.

    通过学习许多C/C++库,你可以有很多操作、使用时间的方法。但在这之前你需要了解一些“时间”和“日期”的概念,主要有以下几个:

    Coordinated UniversalTime(UTC):协调世界时,又称为世界标准时间,也就是大家所熟知的格林威治标准时间 (Greenwich MeanTime,GMT)。比如,中国内地的时间与UTC的时差为+8,也就是UTC+8。美国是UTC-5。

    CalendarTime:日历时间,是用“从一个标准时间点到此时的时间经过的秒数”来表示的时间。这个标准时间点对不同的编译器来说会有所不同,但对一个编译系统来说,这个标准时间点是不变的,该编译系统中的时间对应的日历时间都通过该标准时间点来衡量,所以可以说日历时间是“相对时间”,但是无论你在哪一个时区,在同一时刻对同一个标准时间点来说,日历时间都是一样的。

    epoch:时间点。时间点在标准C/C++中是一个整数,它用此时的时间和标准时间点相差的秒数(即日历时间)来表示。

    clocktick:时钟计时单元(而不把它叫做时钟滴答次数),一个时钟计时单元的时间长短是由CPU控制的。一个clocktick不是CPU的一个时钟周期,而是C/C++的一个基本计时单位。

    我们可以使用ANSI标准库中的time.h头文件。这个头文件中定义的时间和日期所使用的方法,无论是在结构定义,还是命名,都具有明显的C语言风格。下面,我将说明在C/C++中怎样使用日期的时间功能。

    2. 计时

    C/C++中的计时函数是clock(),而与其相关的数据类型是clock_t。在MSDN中,查得对clock函数定义如下:

    clock_t clock( void );

    这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clocktick)数,在MSDN中称之为挂钟 时间(wal-clock)。其中clock_t是用来保存时间的数据类型,在time.h文件中,我们可以找到对它的定义:

    #ifndef_CLOCK_T_DEFINED

    typedef long clock_t;

    #define_CLOCK_T_DEFINED

    #endif

    很明显,clock_t是一个长整形数。在time.h文件中,还定义了一个常量CLOCKS_PER_SEC,它用来表示一秒钟会有多少个时钟计时单元,其定义如下:

    #define CLOCKS_PER_SEC((clock_t)1000)

    可以看到每过千分之一秒(1毫秒),调用clock()函数返回的值就加1。下面举个例子,你可以使用公式clock()/CLOCKS_PER_SEC来计算一个进程自身的运行时间:

    void elapsed_time()

    {

    printf("Elapsedtime:%u secs.\n",clock()/CLOCKS_PER_SEC);

    }

    当然,你也可以用clock函数来计算你的机器运行一个循环或者处理其它事件到底花了多少时间:

    #include “stdio.h”

    #include “stdlib.h”

    #include “time.h”

    int main( void )

    {

    long i = 10000000L;

    clock_t start, finish;

    double duration;

    /* 测量一个事件持续的时间*/

    printf( "Time todo %ld empty loops is ", i );

    start = clock();

    while( i-- )

    finish = clock();

    duration =(double)(finish - start) / CLOCKS_PER_SEC;

    printf( "%fseconds\n", duration );

    system("pause");

    }

    在笔者的机器上,运行结果如下:

    Time to do 10000000empty loops is 0.03000 seconds

    上面我们看到时钟计时单元的长度为1毫秒,那么计时的精度也为1毫秒,那么我们可不可以通过改变CLOCKS_PER_SEC的定义,通过把它定义的大一些,从而使计时精度更高呢?通过尝试,你会发现这样是不行的。在标准C/C++中,最小的计时单位是一毫秒。

    3.与日期和时间相关的数据结构

    在标准C/C++中,我们可通过tm结构来获得日期和时间,tm结构在time.h中的定义如下:

    #ifndef _TM_DEFINED

    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()为负。*/

    };

    #define _TM_DEFINED

    #endif

    ANSIC标准称使用tm结构的这种时间表示为分解时间(broken-down time)。而日历时间(Calendar Time)是通过time_t数据类型来表示的,用time_t表示的时间(日历时间)是从一个时间点(例如:1970年1月1日0时0分0秒)到此时的秒数。在time.h中,我们也可以看到time_t是一个长整型数:

    #ifndef_TIME_T_DEFINED

    typedef long time_t;/* 时间值 */

    #define_TIME_T_DEFINED /* 避免重复定义 time_t */

    #endif

     

    大家可能会产生疑问:既然time_t实际上是长整型,到未来的某一天,从一个时间点(一般是1970年1月1日0时0分0秒)到那时的秒数(即日历时 间)超出了长整形所能表示的数的范围怎么办?对time_t数据类型的值来说,它所表示的时间不能晚于2038年1月18日19时14分07秒。为了能够表示更久远的时间,一些编译器厂商引入了64位甚至更长的整形数来保存日历时间。比如微软在Visual C++中采用了__time64_t数据类型来保存日历时间,并通过_time64()函数来获得日历时间(而不是通过使用32位字的time()函数),这样就可以通过该数据类型保存3001年1月1日0时0分0秒(不包括该时间点)之前的时间。

    在time.h头文件中,我们还可以看到一些函数,它们都是以time_t为参数类型或返回值类型的函数:

    double difftime(time_ttime1, time_t time0);

    time_t mktime(structtm * timeptr);

    time_t time(time_t *timer);

    char * asctime(conststruct tm * timeptr);

    char * ctime(consttime_t *timer);

    此外,time.h还提供了两种不同的函数将日历时间(一个用time_t表示的整数)转换为我们平时看到的把年月日时分秒分开显示的时间格式tm:

    struct tm *gmtime(const time_t *timer);

    struct tm *localtime(const time_t * timer);

    通过查阅MSDN,我们可以知道MicrosoftC/C++ 7.0中时间点的值(time_t对象的值)是从1899年12月31日0时0分0秒到 该时间点所经过的秒数,而其它各种版本的MicrosoftC/C++和所有不同版本的Visual C++都是计算的从1970年1月1日0时0分0 秒到该时间点所经过的秒数。

    4.与日期和时间相关的函数及应用

    在本节,我将向大家展示怎样利用time.h中声明的函数对时间进行操作。这些操作包括取当前时间、计算时间间隔、以不同的形式显示时间等内容。

    4.1 获得日历时间

    我们可以通过time()函数来获得日历时间(CalendarTime),其原型为:time_t time(time_t * timer);

    如果你已经声明了参数timer,你可以从参数timer返回现在的日历时间,同时也可以通过返回值返回现在的日历时间,即从一个时间点(例如:1970 年1月1日0时0分0秒)到现在此时的秒数。如果参数为空(NUL),函数将只通过返回值返回现在的日历时间,比如下面这个例子用来显示当前的日历时间:

    #include"time.h"

    #include"stdio.h"

    int main(void)

    {

    struct tm *ptr;

    time_t lt;

    lt =time(NUL);

    printf("TheCalendar Time now is %d\n",lt);

    return 0;

    }

    运行的结果与当时的时间有关,我当时运行的结果是:

    The Calendar Time nowis 1122707619

    其中1122707619就是我运行程序时的日历时间。即从1970年1月1日0时0分0秒到此时的秒数。

    4.2 获得日期和时间

    这里说的日期和时间就是我们平时所说的年、月、日、时、分、秒等信息。从第2节我们已经知道这些信息都保存在一个名为tm的结构体中,那么如何将一个日历时间保存为一个tm结构的对象呢?

    其中可以使用的函数是gmtime()和localtime(),这两个函数的原型为:

    struct tm *gmtime(const time_t *timer);

    struct tm *localtime(const time_t * timer);

    其中gmtime()函数是将日历时间转化为世界标准时间(即格林尼治时间),并返回一个tm结构体来保存这个时间,而localtime()函数是将日 历时间转化为本地时间。比如现在用gmtime()函数获得的世界标准时间是2005年7月30日7点18分20秒,那么我用localtime()函数在中国地区获得的本地时间会比世界标准时间晚8个小时,即2005年7月30日15点18分20秒。下面是个例子:

    #include"time.h"

    #include"stdio.h"

    int main(void)

    {

    struct tm *local;

    time_t t;

    t=time(NUL);

    local=localtime(&t);

    printf("Localhour is: %d\n",local->tm_hour);

    local=gmtime(&t);

    printf("UTC houris: %d\n",local->tm_hour);

    return 0;

    }

    运行结果是:

    Local hour is: 15

    UTC hour is: 7

    4.3 固定的时间格式

    我们可以通过asctime()函数和ctime()函数将时间以固定的格式显示出来,两者的返回值都是char*型的字符串。返回的时间格式为:

    星期几 月份 日期 时:分:秒 年\n\0

    例如:Wed Jan 02 02:03:551980\n\0

    其中\n是一个换行符,\0是一个空字符,表示字符串结束。下面是两个函数的原型:

    char * asctime(conststruct tm * timeptr);

    char * ctime(consttime_t *timer);

    其中asctime()函数是通过tm结构来生成具有固定格式的保存时间信息的字符串,而ctime()是通过日历时间来生成时间字符串。这样的话, asctime()函数只是把tm结构对象中的各个域填到时间字符串的相应位置就行了,而ctime()函数需要先参照本地的时间设置,把日历时间转化为本地时间,然后再生成格式化后的字符串。在下面,如果t是一个非空的time_t变量的话,那么:

    printf(ctime(&t));

    等价于:

    struct tm *ptr;

    ptr=localtime(&t);

    printf(asctime(ptr));

    那么,下面这个程序的两条printf语句输出的结果就是不同的了(除非你将本地时区设为世界标准时间所在的时区):

    #include"time.h"

    #include"stdio.h"

    int main(void)

    {

    struct tm *ptr;

    time_t lt;

    lt =time(NUL);

    ptr=gmtime(<);

    printf(asctime(ptr));

    printf(ctime(<));

    return 0;

    }

    运行结果:

    Sat Jul 30 08:43:032005

    Sat Jul 30 16:43:032005

    4.4 自定义时间格式

    我们可以使用strftime()函数将时间格式化为我们想要的格式。它的原型如下:

    size_t strftime(

    char *strDest,

    size_t maxsize,

    const char *format,

    const struct tm*timeptr

    );

    我们可以根据format指向字符串中格式命令把timeptr中保存的时间信息放在strDest指向的字符串中,最多向strDest中存放maxsize个字符。该函数返回向strDest指向的字符串中放置的字符数。

    函数strftime()的操作有些类似于sprintf():识别以百分号(%)开始的格式命令集合,格式化输出结果放在一个字符串中。格式化命令说明 串strDest中各种日期和时间信息的确切表示方法。格式串中的其他字符原样放进串中。格式命令列在下面,它们是区分大小写的。

    %a 星期几的简写

    %A 星期几的全称

    %b 月分的简写

    %B 月份的全称

    %c 标准的日期的时间串

    %C 年份的后两位数字

    %d 十进制表示的每月的第几天

    %D 月/天/年

    %e 在两字符域中,十进制表示的每月的第几天

    %F 年-月-日

    %g 年份的后两位数字,使用基于周的年

    %G 年分,使用基于周的年

    %h 简写的月份名

    %H 24小时制的小时

    %I 12小时制的小时

    %j 十进制表示的每年的第几天

    %m 十进制表示的月份

    %M 十时制表示的分钟数

    %n 新行符

    %p 本地的AM或PM的等价显示

    %r 12小时的时间

    %R 显示小时和分钟:hh:mm

    %S 十进制的秒数

    %t 水平制表符

    %T 显示时分秒:hh:mm:ss

    %u 每周的第几天,星期一为第一天(值从0到6,星期一为0)

    %U第年的第几周,把星期日做为第一天(值从0到53)

    %V 每年的第几周,使用基于周的年

    %w十进制表示的星期几(值从0到6,星期天为0)

    %W每年的第几周,把星期一做为第一天(值从0到53)

    %x 标准的日期串

    %X 标准的时间串

    %y 不带世纪的十进制年份(值从0到99)

    %Y 带世纪部分的十进制年份

    %z,%Z时区名称,如果不能得到时区名称则返回空字符。

    %% 百分号

    如果想显示现在是几点了,并以12小时制显示,就象下面这段程序:

    #include “time.h”

    #include “stdio.h”

    int main(void)

    {

    struct tm *ptr;

    time_t lt;

    char str[80];

    lt=time(NUL);

    ptr=localtime(<);

    strftime(str,100,"Itis now %I %p",ptr);

    printf(str);

    return 0;

    }

    其运行结果为:

    It is now 4PM

    而下面的程序则显示当前的完整日期:

    #include

    #include

    void main( void )

    {

    struct tm *newtime;

    char tmpbuf[128];

    time_t lt1;

    time( <1 );

    newtime=localtime(<1);

    strftime( tmpbuf, 128,"Today is %A, day %d of %B in the year %Y.\n", newtime);

    printf(tmpbuf);

    }

    运行结果:

    Today is Saturday, day30 of July in the year 2005.

    4.5 计算持续时间的长度

    有时候在实际应用中要计算一个事件持续的时间长度,比如计算打字速度。在第1节计时部分中,我已经用clock函数举了一个例子。Clock()函数可以精确到毫秒级。同时,我们也可以使用difftime()函数,但它只能精确到秒。该函数的定义如下:

    double difftime(time_ttime1, time_t time0);

    虽然该函数返回的以秒计算的时间间隔是double类型的,但这并不说明该时间具有同double一样的精确度,这是由它的参数觉得的(time_t是以秒为单位计算的)。比如下面一段程序:

    #include"time.h"

    #include"stdio.h"

    #include"stdlib.h"

    int main(void)

    {

    time_t start,end;

    start = time(NUL);

    system("pause");

    end = time(NUL);

    printf("The pauseused %f seconds.\n",difftime(end,start));//<-

    system("pause");

    return 0;

    }

    运行结果为:

    请按任意键继续. . .

    The pause used2.000000 seconds.

    请按任意键继续. . .

    可以想像,暂停的时间并不那么巧是整整2秒钟。其实,你将上面程序的带有“//<-”注释的一行用下面的一行代码替换:

    printf("The pauseused %f seconds.\n",end-start);

    其运行结果是一样的。

    4.6 分解时间转化为日历时间

    这里说的分解时间就是以年、月、日、时、分、秒等分量保存的时间结构,在C/C++中是tm结构。我们可以使用mktime()函数将用tm结构表示的时间转化为日历时间。其函数原型如下:

    time_t mktime(structtm * timeptr);

    其返回值就是转化后的日历时间。这样我们就可以先制定一个分解时间,然后对这个时间进行操作了,下面的例子可以计算出1997年7月1日是星期几:

    #include"time.h"

    #include"stdio.h"

    #include"stdlib.h"

    int main(void)

    {

    struct tm t;

    time_t t_of_day;

    t.tm_year=1997-1900;

    t.tm_mon=6;

    t.tm_mday=1;

    t.tm_hour=0;

    t.tm_min=0;

    t.tm_sec=1;

    t.tm_isdst=0;

    t_of_day=mktime(&t);

    printf(ctime(&t_of_day));

    return 0;

    }

    运行结果:

    Tue Jul 01 00:00:011997

    现在注意了,有了mktime()函数,是不是我们可以操作现在之前的任何时间呢?你可以通过这种办法算出1945年8月15号是星期几吗?答案是否定的。因为这个时间在1970年1月1日之前,所以在大多数编译器中,这样的程序虽然可以编译通过,但运行时会异常终止。

    5.总结

    本文介绍了标准C/C++中的有关日期和时间的概念,并通过各种实例讲述了这些函数和数据结构的使用方法。笔者认为,和时间相关的一些概念是相当重要的,理解这些概念是理解各种时间格式的转换的基础,更是应用这些函数和数据结构的基础。

    展开全文
  • Linux下time函数

    千次阅读 2018-10-17 20:47:56
    Linux下time函数都在time.h头文件中。 1、头文件 和时间有关的头文件有以下几个: time.h sys/time.h sys/times.h sys/timeb.h sys/timex.h time.h是C标准库的头文件,其余sys开头的都是Linux系统自己的头文件。 ...

    Linux下time函数都在time.h头文件中。
    1、头文件

    和时间有关的头文件有以下几个:


    time.h
    sys/time.h
    sys/times.h
    sys/timeb.h
    sys/timex.h
    time.h是C标准库的头文件,其余sys开头的都是Linux系统自己的头文件。

    /usr/include/time.h定义了常用的time函数。

    到/usr/include/sys目录下查看这几个文件:

    sys/time.h定义了timezone结构体和Linux系统的时间函数。

    sys/times.h定义了进程使用CPU时间的结构体tms。

    sys/timeb.h定义了ftime函数的返回值的结构体timeb。

    sys/timex.h定义了关于时钟调整算法的结构体timex。

    2、常用函数和结构体

    time函数原型(time.h中):


    time_t time(time_t *calptr);
    参数:

    time_t类型变量的指针。

    返回值:

    time_t类型相当于一个long,time用于取Epoch记年以来到现在经过的秒数(系统当前时间),Epoch记年从1970年1月1日开始。把取到的时间存在指针指向的变量中。

    localtime函数原型(time.h中):


    struct tm *localtime(const time_t *calptr);
    参数:

    time_t类型变量的指针。

    返回值:

    指向tm结构体的指针类型。

    作用是将time_t的值转换为tm结构体。然后可以打印输出。

    tm结构体(time.h中):

    /* Used by other time functions.  */
    struct tm
    {
      int tm_sec;            /* Seconds.    [0-60] (1 leap second) */
      int tm_min;            /* Minutes.    [0-59] */
      int tm_hour;            /* Hours.    [0-23] */
      int tm_mday;            /* Day.        [1-31] */
      int tm_mon;            /* Month.    [0-11] */
      int tm_year;            /* Year    - 1900.  */
      int tm_wday;            /* Day of week.    [0-6] */
      int tm_yday;            /* Days in year.[0-365]    */
      int tm_isdst;            /* DST.        [-1/0/1]*/

    #ifdef    __USE_BSD
      long int tm_gmtoff;        /* Seconds east of UTC.  */
      __const char *tm_zone;    /* Timezone abbreviation.  */
    #else
      long int __tm_gmtoff;        /* Seconds east of UTC.  */
      __const char *__tm_zone;    /* Timezone abbreviation.  */
    #endif
    };
    ftime函数原型(timeb.h):


    int ftime(struct timeb *tp);
    参数:

    指向timeb结构体变量的指针。

    返回值:

    将当前系统时间存入timeb结构体中,包括了秒和毫秒。作用就是能获取当前时间精确到毫秒。

    timeb结构体(sys/timeb.h):

    /* Structure returned by the `ftime' function.  */
    struct timeb
      {
        time_t time;        /* Seconds since epoch, as from `time'.  */
        unsigned short int millitm;    /* Additional milliseconds.  */
        short int timezone;        /* Minutes west of GMT.  */
        short int dstflag;        /* Nonzero if Daylight Savings Time used.  */
      };
    times函数原型:


    clock_t times(struct tms *buf);
    参数:

    指向tms结构体变量的指针。

    返回值:

    clock_t等同于long类型。用于获得进程运行时的CPU时间。

    tms结构体(sys/times.h中):

    /* Structure describing CPU time used by a process and its children.  */
    struct tms
      {
        clock_t tms_utime;        /* User CPU time.  */
        clock_t tms_stime;        /* System CPU time.  */

        clock_t tms_cutime;        /* User CPU time of dead children.  */
        clock_t tms_cstime;        /* System CPU time of dead children.  */
      };
    #include 
    #include 
    #include 
    #include 
    #include 
    #include 

    int main(void)
    {
      int i = 0;
      int sum = 0;
      long tck = 0;
      long lBeginTime = 0;
      long lEndTime = 0;
      
      time_t curr;
      struct tm * tTM;
      struct tms tTMS;
      struct timeb tTimeB;
      
      tzset();
      
      //time函数获得秒数
      time(&curr);
      printf("current time is %ld seconds\n", curr);
      
      //localtime函数转换time_t
      tTM = localtime(&curr);
      printf("%4d-%02d-%02d %02d:%02d:%02d\n", tTM->tm_year + 1900, tTM->tm_mon + 1, tTM->tm_mday, 
      tTM->tm_hour, tTM->tm_min, tTM->tm_sec);
      
      //ftime函数获得时间包括毫秒
      ftime(&tTimeB);
      tTM = localtime(&tTimeB.time);
      printf("%4d-%02d-%02d %02d:%02d:%02d :%3d\n", tTM->tm_year + 1900, tTM->tm_mon + 1, tTM->tm_mday, 
      tTM->tm_hour, tTM->tm_min, tTM->tm_sec, tTimeB.millitm);
      
      //用times函数计算以下循环运行花费的时间
      lBeginTime = times(&tTMS);
      printf("lBeginTime = %ld\n", lBeginTime);
      while (1)
      {
        i = i + 1;
        if (i == 0)
          break;
      }
      lEndTime = times(&tTMS);
      printf("lEndTime = %ld\n", lEndTime);
      printf("循环使用的CPU时间为: %ld\n", lEndTime - lBeginTime);
      tck = sysconf(_SC_CLK_TCK);//获取系统时钟(1秒里有多少个)
      printf("转换为秒: %f\n", ((lEndTime - lBeginTime) / (double)tck));
      
      return 0;
    }
    执行结果:


    [root@server ~]# ./test10
    current time is 1421644980 seconds
    2015-01-19 00:23:00
    2015-01-19 00:23:00 :781
    lBeginTime = 708268851
    lEndTime = 708270107
    循环使用的CPU时间为: 1256
    转换为秒: 12.560000
    --------------------- 
    作者:谢谢考拉 
    来源:CSDN 
    原文:https://blog.csdn.net/hou512504317/article/details/51124118 
    版权声明:本文为博主原创文章,转载请附上博文链接!

    展开全文
  • c语言time函数怎么使用In this article, we’ll take a look at using the time() function in C/C++. 在本文中,我们将研究在C / C ++中使用time()函数。 The time() function is a useful utility function ...

    c语言time函数怎么使用

    In this article, we’ll take a look at using the time() function in C/C++.

    在本文中,我们将研究在C / C ++中使用time()函数。

    The time() function is a useful utility function that we can use to measure the elapsed time of our program.

    time()函数是一个有用的实用程序函数,可用于测量程序的经过时间。

    Let’s look at how we can use this function, using some simple examples!

    让我们来看一些简单的例子,看看如何使用此功能!



    C / C ++中time()函数的基本语法 (Basic Syntax of the time() function in C/C++)

    This function belongs to the header file <time.h>, so we must include this before calling time().

    该函数属于头文件<time.h> ,因此在调用time()之前必须包含此文件。

    
    #include <time.h>
    time_t time(time_t *tloc);
    

    This takes in a pointer to a time_t datatype and returns the time elapsed since 00:00:00 UTC, January 1, 1970.

    这将获取一个指向time_t数据类型的指针,并返回从1970年1月1日UTC 00:00:00开始经过的时间。

    The time value returned is in seconds, so you must make suitable conversions from it.

    返回的时间值以秒为单位,因此您必须从中进行适当的转换。

    If tloc is not a null pointer, the returned value is also stored in the object pointed to by second.

    如果tloc 不是空指针,则返回的值也存储在second指向的对象中。

    Otherwise, if tloc is NULL, the return value is not stored anywhere.

    否则,如果tlocNULL ,则返回值不会存储在任何地方。

    Let’s look at some simple examples now.

    现在让我们看一些简单的例子。

    在C / C ++中使用time()–一些示例 (Using time() in C/C++ – Some Examples)

    Let’s first look at the case when tloc is a NULL pointer.

    首先让我们看一下tloc是NULL指针的情况。

    
    #include <stdio.h>
    #include <time.h>
    
    int main() {
        time_t num_seconds = time(NULL); // Passing NULL to time()
        printf("Since 1st January 1970 UTC, No. of seconds = %d, No. of days = %d", (int)num_seconds, (int)num_seconds/86400);
        return 0;
    }
    

    Output

    输出量

    
    Since 1st January 1970 UTC, No. of seconds = 1592317455, No. of days = 18429
    

    As of the time of writing (June 16 2020), this is indeed true!

    截至撰写本文时(2020年6月16日),确实如此!

    Now, let’s go to the second case, when tloc is not NULL.

    现在,让我们转到第二种情况,即tloc不为NULL时。

    In this case, since the return value will be stored to the pointer location, there is no need to assign it separately!

    在这种情况下,由于返回值将存储在指针位置,因此无需单独分配它!

    
    #include <stdio.h>
    #include <time.h>
    
    int main() {
        time_t tloc;
        time(&tloc); // Storing the return value to tloc
        printf("Since 1st January 1970 UTC, No. of seconds = %d, No. of days = %d", (int)tloc, (int)tloc/86400);
        return 0;
    }
    

    This will give a similar output as before.

    这将提供与以前相似的输出。



    结论 (Conclusion)

    In this article, we learned about using the time() function in C / C++, to get the time elapsed since the first epoch.

    在本文中,我们学习了如何在C / C ++中使用time()函数来获取自第一个时期以来所经过的时间。

    For more content on C and C++, do go through our tutorial section on C programming!

    有关C和C ++的更多内容,请阅读我们有关C编程的教程部分

    参考资料 (References)



    翻译自: https://www.journaldev.com/41447/time-function-in-c-plus-plus

    c语言time函数怎么使用

    展开全文
  • jmeter time函数用法

    千次阅读 2017-06-25 10:45:11
    jmeter在进行接口测试时,有些数据操作会涉及到数据库时间。...针对上述的要求,我们就需要用到time函数来生成你想要的时间。 各种格式的当前时间处理: 时间戳: 13位到毫秒的时间戳用${__time(,)}即可,展

    jmeter在进行接口测试时,有些数据操作会涉及到数据库时间。
    比如:短信发送时间要间隔一分钟、资金相关的还款操作一天只能一次,红包时间等相关的操作都需要另外处理;如果不进行处理,短信操作你得1分钟才发一条,严重影响了你的脚本执行时间。
    针对上述的要求,我们就需要用到time函数来生成你想要的时间。
    各种格式的当前时间处理:

    1. 时间戳:
      13位到毫秒的时间戳用${__time(,)}即可,展现的效果为
      执行前的脚本
      执行后的脚本
      10位到秒的时间戳使用${__time(/1000,)}

    2. 固定格式的年月日

      1. ${__time(yyyyMMdd,)} 20151214 //返回年月日
      2. ${__time(HHmmss,)} 092816 //返回时分秒
      3. ${__time(yyyyMMdd-HHmmss,)} 20151214-092816 //全部返回
      4. ${__time(yyyy:MM dd-HH~mm.ss,)} 2017:06 25-10~24.29 //中间的分隔符可以自定义显示
    3. 需要自定义时间
      比如要拿到上一月的数据,需要使用intSum函数先把当月的时间减一天后再与其他年月时分秒进行拼接
      ${__intSum({__time(MM,nowDay)},-01,nextMonth)}

      示例如下:
      先获取当前时间

    4. ${__time(yyyyMMdd HHmmss,)}
      再获取上个月的月份时间:
    5. ${__intSum({__time(MM,nowDay)},-01,nextMonth)}
      再进行拼接:
    6. ${__time(yyyy,)}
    7. ${nextMonth}
    8. ${__time(dd HHmmss,)}
      效果如图:
      执行前的脚本
      执行后的效果

    可以拿到你想要指定格式日期后,你就可以根据数据库的要求进行更新操作了
    像我都会在执行操作前先把相关的数据恢复下
    恢复默认设置

    展开全文
  • 有的,Jmeter提供了time函数来达成这一点,如下,打开函数助手,找到__time这个函数,可以看到该函数有两个参数,即格式和参数名称,两者都不是必填项, 格式:非必填项,格式如果不填那么就是默认获取当前时间的...
  • python中time库的time.time()函数的作用是什么,时间,浮点,实例,纪元,函数python中time库的time.time()函数的作用是什么python中time库的time.time()函数的作用是什么?作用:Python time time() 返回当前时间的...
  • C语言利用time函数实现简单的定时器

    万次阅读 2019-04-28 10:31:58
    利用C语言中的time函数,实现一个一秒间隔的打印,其实很简单 #include <stdio.h> #include <time.h> int main(int num, char* arg[]){ int duration = 1; time_t start, current = 0; while(1){ ...
  • C++ 的 get_time 和 put_time 函数

    千次阅读 2016-03-06 16:06:04
    C++ 引进了 get_time 和 put_time 函数 #include  #include #include int main() { std::time_t t = std::time(NULL); std::tm tm = *std::localtime(&t); std::cout.imbue(std::locale("CHS"));
  • C语言time函数

    千次阅读 2016-11-02 16:18:42
    可以通过time()函数来获得计算机系统当前的日历时间(Calendar Time),处理日期时间的函数都是以本函数的返回值为基础进行运算。其原型为:time_t time(time_t * t);   如果你已经声明了参数t,你可以从参数t返回...
  • 使用time函数来获取当前时间,通过两次时间之差来得到时间间隔,但是编译出错,请问怎么改?![图片](https://img-ask.csdn.net/upload/201604/24/1461474491_991750.jpg)
  • C语言中time函数和localtime获取系统时间和日期 可以通过time()函数来获得计算机系统当前的日历时间(Calendar Time),处理日期时间的函数都是以本函数的返回值为基础进行运算。1. time 函数 返回1970-1-1, 00:00...
  • Python time 模块time 函数的时间单位

    千次阅读 2019-11-22 15:35:18
    Python 中time 模块下的time 常用于计算函数运行的时间 import time starttime = time.time() xxx endtime = time.time() print('xxx {:.5f} s'.format(endtime-starttime)) 这里的时间单位是秒(s), 可以...
  • c中time函数的用法以及随机数的产生

    千次阅读 2017-04-28 20:08:23
    1. c语言中time函数的用法,头文件time.h: 机器日历时间也就是从一个时间点(例如 1970年1月1日0时0分0秒)到现此时的秒数。 函数名称:time 函数原型:time_t time(time_t *timer) 函数功能:得到机器的日历...
  • 时间的格式必须是24hh:59min:59s,然而使用Random函数会造成时间格式错误问题,如随机出来的时间会大于24hh,59min,59s的情况,若要...直接用time函数:${__time(hhmmss,)}   ${__time(yyyyMMddHHmmss,ReqTime)} 
  • C语言中 time函数和difftime函数

    万次阅读 多人点赞 2016-02-23 09:36:19
    C语言函数time() 头文件:#include 定义函数time_t time(time_t *t); 函数说明:此函数会返回从公元 1970 年1 月1 日的UTC 时间从0 时0 分0 秒算起到现在所经过的秒数。如果t 并非空指针的话,此函数也...
  • C语言中time函数

    千次阅读 2010-11-05 15:10:00
    C语言中time函数 void main() {  struct tm *newtime; char tmpbuf[128];  time_t lt1;  time(); newtime = localtime() ; strftime(tmpbuf,128," year...
  • 【PHP】microtime 与 time 函数介绍

    千次阅读 2016-03-17 22:18:49
    又到了学习php函数的时间了,这一次我为了简单的计算程序耗时,就用了一下microtime函数,不过它和我们平常用的 time函数不一样,它会返回一个字符串! 所以我们要理解这个字符串到底是什么意思!
  • 针对此问题,可以使用JMeter自带的_time 函数来解决以上问题   操作步骤: 1、通过函数助手,生成一个_time 函数:     2、如果参数为时间戳,那公式为: ${__time(,)} : 默认该公式精确到毫秒级别,...
  • HIVE中的from_unixtime函数

    万次阅读 2019-01-28 09:53:55
    hive中的from_unixtime()函数,可以把时间戳格式的时间,转化为年月日时分秒格式的时间。 from_unixtime的参数要求为整数,且单位为秒。 如果从业务系统拿到的时间戳格式的时间单位为毫秒,则需要先将它转化为秒,...
  • c语言使用time函数

    千次阅读 2018-09-15 10:31:16
    看了两遍博客是关于C语言时间函数的, 分别是https://blog.csdn.net/wangluojisuan/article/details/7045592 和https://www.cnblogs.com/caolisong/archive/2007/04/11/709732.html。...另外, 使用时间函数,...
  • C语言中的time函数总结

    万次阅读 多人点赞 2017-09-14 22:54:12
    编程中经常用到时间表达及转换的函数,它们都定义在time.h库函数中,在此做一下总结,以方便后续查看使用。几个时间概念:1:Coordinated Universal Time(UTC): 协调世界时,又称世界标准时间,也即格林威治标准...
  • 使用Python中time 函数库中的函数求当前系统的日期,并计算当前日期是本年度的第几天。 def isr_year(n): if (n%40 and n%100!=0)or n%4000: return True else: return False def conutday(y,m,d): today=d ...
  • OpenMP(3) omp_get_wtime 函数

    万次阅读 2015-04-27 21:26:46
    omp_get_wtime函数可以返回从某个特殊点所经过的时间,单位秒double omp_get_wtime( );返回值:返回从任意一个一致点所经过的时间,单位秒。这个时间点在程序运行过程中必须有一致性,这样才能实现后续比较。例子:/...
  • 于是可以想到Jmeter中的time函数,对需要输入的接口参数,加上时间戳的后缀。 方法如下: 1. 打开Jmeter ,然后选项—-函数助手对话框 ,在弹出的页面中,选择_time函数 输入固定的输入部分 University与{__ti

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 51,170
精华内容 20,468
关键字:

time函数