库time.h初探

转载自http://blog.csdn.net/chenyiming_1990/article/details/8682552
time.h 属于C语言库

总结可以是两个类型:
time_t:表示距离 UTC 时间 1970-01-01 00:00:00 的秒数。也叫做日历时,类型是 long (typedef __int64 time_h)
clock_t: 只用于程序计时,貌似其他的没它什么事。类型是long, typedef long clock_t
struct tm:通常用于存储(人类习惯的年月日时分秒)本地时间。
UTC:cordinated universal time 世界统一时间,世界标准时间,日内瓦“1979.12.03”?,中国大陆时间与UTC时差为+8.UTC+8=本地时间。

struct tm  
{  
    int tm_sec; /* Seconds: 0-59 (K&R says 0-61?) */  
    int tm_min; /* Minutes: 0-59 */  
    int tm_hour;    /* Hours since midnight: 0-23 */  
    int tm_mday;    /* Day of the month: 1-31 */  
    int tm_mon; /* Months *since* january: 0-11 */  
    int tm_year;    /* Years since 1900 */  
    int tm_wday;    /* Days since Sunday (0-6) */  
    int tm_yday;    /* Days since Jan. 1: 0-365 */  
    int tm_isdst;   /* +1 Daylight Savings Time, 0 No DST,* -1 don't know */  
};  

常用函数:
clock: 获取程序开始执行后占用的处理器时间,返回值clock_t。
time:获取当前系统时间(UTC时间)的time_t值。
ctime:将time_t值转换为表示本地时间的字符串。
gmttime:将time_t值转换为表示GMT时间的字符串。
localtime:将time_t转换为表示本地时间的strunct tm结构。
mktime:将表示本地时间的struct tm转换为time_t。
asctime:将struct tm转换为字符串形式。
difftime:得到两个日历时之间的差值。
strftime:自定义把结构体tm的日期与时间信息转换为制定的格式。

#include <iostream>
using namespace std;
int main()
{
    time_t timer;  //typedef __int64 time_t 类型等同于long
    timer = time(NULL);
    cout << timer << endl;
    cout << timer / 60 / 60 / 24 / 365 << endl;
    cout << "-------------------------" << endl;
    time_t timerr = 1502708561 + 24 * 3600 * 365;
    cout << timerr << endl;
    cout << timerr / 60 / 60 / 24 / 365 << endl;
    system("pause");
}
1502708822
47
-------------------------
1534244561
48

转换时间格式成日常习惯模式:

#include <time.h>
#include <iostream>

using namespace std;

int main()
{
    time_t timer;  //typedef __int64 time_t 类型等同于long
    timer = time(NULL);
    cout << timer << endl;
    struct tm *sp_time;
    sp_time = localtime(&timer);
    cout << "local time is :" << asctime(sp_time);
    system("pause");
}

输出为:

1502709176
47
local time is :Mon Aug 14 19:12:56 2017

自定义结构体struct tm

#include <time.h>
#include <string>
#include <stdio.h>

using namespace std;

int main()
{
    struct tm st;
    char str[80];

    st.tm_sec = 39;
    st.tm_min = 42;
    st.tm_hour = 20;
    st.tm_mon = 11;
    st.tm_mday = 28;
    st.tm_year =117; // 相对于1900,过了多少年
    st.tm_wday = 6;  //相对一周,过了几天
    st.tm_yday = 0;  //相对一年头,过了多少天,
    st.tm_isdst = 0; //一般为0

    strcpy(str, asctime(&st));
    printf("local time is :%s" ,str);
    system("pause");
}

输出为:

local time is :Sat Dec 28 20:42:39 2017

获得日历时间

#include <time.h>
#include <string>
#include <stdio.h>

using namespace std;

int main()
{
    time_t t;
    //
    t = time(NULL);
    //  time(&t); //两句等效
    printf("Today date and time is : %s", ctime(&t));

    system("pause");
    return 0;
}

结果为:

Today date and time is : Mon Aug 14 19:32:09 2017

计算时间差

#include <time.h>
#include <stdlib.h>
#include <stdio.h>
#include <windows.h>

using namespace std;

int main()
{
    time_t first, second;
    system("cls"); //调用系统命令,清楚屏幕上文字
    time(&first);
    Sleep(2000);
    second = time(NULL);

    printf("The difference time is : %f", difftime(second,first));
    system("pause");
    return 0;
}

结果为:

Today date and time is : Mon Aug 14 19:32:09 2017

计算系统运行时间

#include <time.h>
#include <stdlib.h>
#include <stdio.h>
#include <windows.h>

using namespace std;

int main()
{
    Sleep(2895);
    printf("%lf\n", (double)clock()/CLOCKS_PER_SEC);//clock_t clock()时间单位是ms
    //define CLOCKS_PER_SEC ((clock_t)1000)
    system("pause");
    return 0;
}

结果为:

3.200000

挂钟时间,为长数,时间时间
clock()就像ros使用“use_sim_time”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值