time time_t tm用法

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

一、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);
}

运行结果:

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来转换。

二、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);
}

运行结果:

time = 1555576546

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;
     }; 

三、ctime用法

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

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

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

运行结果:

date and time: Thu Apr 18 16:43:32 2019

四、mktime用法

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

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

日期如何转成秒数实例

#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

五、参考资料

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

struct tm 和 time_t 时间和日期的使用方法(转) - 教学博客 - 博客园 http://www.cnblogs.com/hhpjxbk/archive/2009/10/06/1578385.html

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,012评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,628评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,653评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,485评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,574评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,590评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,596评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,340评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,794评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,102评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,276评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,940评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,583评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,201评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,441评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,173评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,136评论 2 352

推荐阅读更多精彩内容

  • 常用模块 认识模块 什么是模块 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文...
    go以恒阅读 1,945评论 0 6
  • 一、Linux时间类型 在Linux系统当中,时间分为两种类型:格林威治时间和日历时间。 Coordinated ...
    konishi5202阅读 3,453评论 0 4
  • 一.概念 在C/C++中,通过学习许多C/C++库,你可以有很多操作、使用时间的方法。但在这之前你需要了解一些“时...
    小辰带你看世界阅读 1,326评论 0 1
  • 开始之前,首先要说明这几点: 1.在Python中,通常有这几种方式来表示时间:1)时间戳 2)格式化的时间字符串...
    TENG书阅读 323评论 0 0
  • 1.面向对象三大特性:封装、继承、多态 <1>封装: 将属性和方法放到一起(类里面)做为一个整体,使用方法封装...
    Cestine阅读 402评论 0 0