time time_t tm用法

最近搞视频检索,涉及到不少时间的计算。顺便记录下一些基本用法。html

1、gmtime用法

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define PNULL NULL
int p_time(time_t t)
{
    struct   tm  *timenow;
    if (t == -1) {
        printf("p_time input error. time = -1\n");
        return;
    }
    timenow = gmtime(&(t));
    if (timenow == PNULL) {
        return;
    }
    printf("%4d.%02d.%02d-%02d:%02d:%02d\n", \
        timenow->tm_year+1900,timenow->tm_mon+1,timenow->tm_mday,\
        timenow->tm_hour,timenow->tm_min,timenow->tm_sec);
}
void main()
{
    time_t test_time;

    time(&test_time);
    test_time = test_time + (8*60*60);

    printf("time = %lu\n", test_time);
    p_time(test_time);
}
复制代码

运行结果:bash

root@chenwr-pc:/home/workspace/test/tmp/FAT# date
Thu Mar 28 14:52:03 CST 2019
root@chenwr-pc:/home/workspace/test/tmp/FAT# gcc time.c -o run && ./run
time = 1553784724
2019.03.28-14:52:04
复制代码

做用打印出当前时间。函数

  1. gmtime()将参数test_time所指的time_t 结构中的信息转换成真实世界所使用的时间日期表示方法,而后将结果由结构tm 返回。
  2. Coordinated Universal Time(UTC):协调世界时,又称为世界标准时间,也就是你们所熟知的格林威治标准时间(Greenwich Mean Time,GMT)。好比,中国内地的时间与UTC的时差为+8,也就是UTC+8。美国是UTC-5。
  3. time函数用来获取机器时间(UTC)单位为秒数,全部和北京时间差8个时区,所以要加86060。最后经过gmtime来转换。

2、time函数用法

time()函数的用途是返回一个值,即**格林尼治时间1970年1月1日00:00:00到当前时刻的时长**,时长单位是秒。
复制代码
#include <stdio.h>
#include <stdlib.h>
void main()
{
    time_t t;

    time(&t);
    printf("time = %lu\n", t);
}
复制代码

运行结果:ui

time = 1555576546
复制代码

tm结构体spa

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;
     }; 
复制代码

3、ctime用法

函数原型: char *ctime(long time) 函数功能: 获得日历时间 函数返回: 返回字符串格式:星期,月,日,小时:分:秒,年 参数说明: time-该参数应由函数time得到 所属文件: <time.h>.net

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main()
{
    time_t t;

    time(&t);
    printf("date and time: %s\n", ctime(&t));
}
复制代码

运行结果:code

date and time: Thu Apr 18 16:43:32 2019
复制代码

4、mktime用法

将时间转换为自1970年1月1日以来逝去时间的秒数,发生错误时返回-1视频

函数原型:time_t mktime(struct tm * timeptr); 所属文件 #include <time.h>htm

日期如何转成秒数实例blog

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define PNULL NULL
typedef signed long         INT32S;
#include <math.h>
#include <string.h>
int p_time(time_t t)
{
    struct   tm  *timenow;
    if (t == -1) {
        printf("p_time input error. time = -1\n");
        return;
    }
    timenow = gmtime(&(t));
    if (timenow == PNULL) {
        return;
    }
    printf("%4d.%02d.%02d-%02d:%02d:%02d\n", \
        timenow->tm_year+1900,timenow->tm_mon+1,timenow->tm_mday,\
        timenow->tm_hour,timenow->tm_min,timenow->tm_sec);
}
time_t date_to_sec(int year, int mon, int day, int hour, int min, int sec)
{
    struct tm date ;
    int time_zone = 8;

    memset(&date, 0, sizeof(date));
    date.tm_year = year-1900;
    date.tm_mon = mon-1;
    date.tm_mday = day;
    date.tm_hour = hour+time_zone;
    date.tm_min = min;
    date.tm_sec = sec;

    return mktime(&date);
}
void main()
{
    int my_time;

    my_time = date_to_sec(2019, 3, 20, 18, 10, 6);
    printf("date sec; %d\n", my_time);
    p_time(my_ime);
}
复制代码

运行结果:

date sec; 1553105406
2019.03.20-18:10:06
复制代码

5、参考资料

这篇把常见的关于time的函数用法整理的很清晰 c语言中time函数的用法 - wangluojisuan的专栏 - CSDN博客 blog.csdn.net/wangluojisu…

struct tm 和 time_t 时间和日期的使用方法(转) - 教学博客 - 博客园 www.cnblogs.com/hhpjxbk/arc…

相关文章
相关标签/搜索