time time_t tm用法

2023-11-13

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

一、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>
#include <math.h>
#include <string.h>
#define PNULL NULL
typedef signed long         INT32S;
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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

time time_t tm用法 的相关文章

随机推荐

  • postman单个请求批量发送

    第一部 抓取单个请求选择一个请求 copy as cURL bash 第二步 复制到postman 并保存 第三步 单个请求批量发送 点击Runner i第四步 选择刚才的请求 设置发送次数Iterations 点击run 成功
  • Java 常用API

    Java 常用API JFC Java类库 是系统提供的已实现的标准类的集合 是Java编程的API Application Program Interface 可帮助开发者方便 快捷地进行软件开发 Java按其不同的功能分成不同的包 常用
  • [极客大挑战 2019]LoveSQL 1

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 极客大挑战 2019 LoveSQL 1 题目 一 做题步骤 1 万能密码尝试 2 测试注入列数 3 测试注入点 4 查询数据库 5 查询表名 6 查询列名 字段 7 查询数
  • 【猿人学WEB题目专解】猿人学第15题

    据说 看我文章时 关注 点赞 收藏 的 帅哥美女们 心情都会不自觉的好起来 前言 作者简介 大家好我是 user from future 意思是 来自未来的用户 寓意着未来的自己一定很棒 个人主页 点我直达 在这里肯定能找到你想要的 专栏介
  • TCP和UDP的最完整的区别

    欢迎访问个人网站 这里排版舒服点 TCP和UDP的最完整的区别 码到城攻TCP和UDP的最完整的区别https www codecomeon com posts 7 TCP UDP TCP与UDP基本区别 1 基于连接与无连接 2 TCP要
  • redis 由浅入深 之进阶(发布与订阅、事务、连接和Reids服务器)

    Redis发布与订阅 Redis 发布订阅 pub sub 是一种消息通信模式 发送者 pub 发送消息 订阅者 sub 接收消息 Redis 客户端可以订阅任意数量的频道 下图展示了频道 channel1 以及订阅这个频道的三个客户端 c
  • 干货!一种适用性、可拓展性强的离线强化学习方法

    点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入 近年来 离线强化学习算法 Offline Reinforcement Learning 由于其不与环境交互 仅从数据集中学习策略 而得到越来越多的关注 与离线策略强化学习 Off
  • 普通电脑用u盘安装服务器系统安装教程,Windows Server 2016使用U盘安装需要哪些步骤 硬盘安装Windows Server 2016图文教程...

    服务器操作系统Windows Server 2016如何安装 Windows Server 2016如何使用U盘安装 Windows Server 2016如何在硬盘上安装 Windows Server 2016核心安装和桌面体验安装有什么
  • PyQt4(简单界面)

    import sys from PyQt4 import QtCore QtGui app QtGui QApplication sys argv widget QtGui QWidget widget resize 600 400 wid
  • Django 项目 ModuleNotFoundError: No module named ‘mysqldb‘

    出现这种情况一般多为这两种原因导致 1 没安装相关包导致的 这种情况好解决 直接 pip3 install mysqldb 2 已安装相关包 仍然报错 这种情况大概率是因为包路径原因导致的 解决举例如下 from mysqldb impor
  • C++11中挂起线程

    C 11中用sleep untill 函数挂起线程 define CRT SECURE NO WARNINGS include
  • H5唤起关注公众号页面

    正好做一个抽奖活动 需要关注获取抽奖次数来抽奖 判断是否关注 1 登录微信公众平台 2 点击微信号头像右击查看源代码 3 找到源代码中以下代码 将uin base64这个参数值带入以下链接 https mp weixin qq com mp
  • 模拟电路设计(7)--- 增强型MOSFET

    这篇我们开始讲一讲MOSFET Metal Oxide Semiconductor Field Effect Transistor MOS FET从本质上来看和J FET一样也属于 多子 器件 但从控制机理上有所不同 增强型MOSFET器件
  • 18个堪称神器的命令行工具,高效运维必备

    上期入口 24个 CSS 高级技巧合集 本资源原链接地址 18个堪称神器的命令行工具 thefuck 命令行打错了以后 打一个fuck就会自动纠正 GitHub https github com nvbn thefuck ag 比 grep
  • 【计算机网络5】运输层#UDP协议

    一 运输层作用 运输层向其上层的应用层提供通信服务 当应用层的某个进程发送一个报文时 这个报文便会在应用层上被添加相应的控制信息 然后交付给其下层的运输层 运输层收到消息之后再添加控制信息 然后交付其下层 当网络边缘的两台计算机使用网络的核
  • Windows 下安装sql server 2016(附安装包资源)

    首先之前安装过sql server 但是只是在控制面板卸载的 请参考一下博文 完全卸载sql server windows 下如何完全卸载SQL server 这是我的安装包 需要的小伙伴可以自行取用 链接 https pan baidu
  • GPT专业应用:生成实习报告

    正文共 1070 字 阅读大约需要 4 分钟 大学生必备技巧 您将在4分钟后获得以下超能力 快速生成实习报告 Beezy评级 B级 经过简单的寻找 大部分人能立刻掌握 主要节省时间 推荐人 Kim 编辑者 Linda 图片由Lexica 生
  • c++第一次实现双向链表附迭代器

    双向链表 下一步就是类模板参数和迭代器实现一些简单算法 代码量等知识储备够了再优化 异常还理解不了 ifndef LIST H define LIST H include
  • 本周大新闻|Vision Pro头显重磅发布;苹果收购AR厂商Mira

    本周XR大新闻 上周Quest 3发布之后 本周苹果MR头显Vision Pro正式发布 也是本周AR VR新闻的重头戏 AR方面 苹果发布VST头显Vision Pro 虽然本质是台VR 但以AR场景为核心 以及visionOS visi
  • time time_t tm用法

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