catalog

  • ctime
  • clock()
  • time()
    • UTC
    • gmtime
    • localtime

ctime

里, 是直接使用的<time.h>是一个C库!!! 不是c++的
也就意味着: 他里面的东西clock(), clock_t 都是全局的!!!

clock()

clock_t clock();函数 用于计算: 程序已经运行多久了, 即: 从程序的main函数开始执行, 到现在, 有多少个clock tick 时钟滴答
clock_t 是一个 整数.
比如, 你main函数 刚开始, 你调用clock()返回值 肯定是0

  • 一个clock tick, 表示多久呢?? 这不是一个固定量, 他取决于: CLOCKS_PER_SEC的宏定义 (一般是1000)
    即, 比如有x个clock_t, 则他就代表: x / CLOCKS_PER_SEC 个秒
  • clock()函数, 是与线程无关的!!! 同一时刻, 所有的线程 他们的clock() 返回值都是一样的!!
    即, 子线程的clock(), 依然是以exe的main函数开始 为起点的, 而不是 (子线程的开始时刻)
    [0 (main函数开始)] [5 (sub_thread开始, 且以detach方式)] [x]
    在[x]时刻时: main线程sub线程clock()返回值, 是一样的

time()

time_t time( time_t * _p)

  • 返回值: 从1970-1-1 0:0 到 此刻的 秒数 (若time_t是int类型, 则可以维持到 2038年)
    他不一定是正确的!!! 他的值, 是根据 (系统时间) 来计算的!!! 而系统时间, 是可以手动修改的!!!
  • 参数: 如果不是null, 则将(返回值) 也赋值到 _p中

UTC

我们此时得到了: time_t stamp = time(); 由于他是一个整数, 我们需要将他 转换为: (年-月-日…)

而一个相同的stamp, 对于不同的(时区): 其小时是不同的, 其他(分钟/秒/…)都相同
我们需要将这个stamp, 转换为: 我们所在地区的 时区

世界同一时间: UTC
UTC分为: 24个时区
GMT: 格林尼治时区(英国伦敦) 为UTC的标准时间; 其他的时区, 以GMT的时间, +x 或 -x, 表示: 比GMT快/慢x个小时

比如, 我们中国 所在的时区是: UTC +8, 即我们的时间 比GMT国际时间, 要快8个小时;

gmtime

struct tm * _t = localtime( &stamp);

stamp 这个时间戳, 根据GMT (标准UTC), 得到一个tm结构体 (这个结构体, 有年月日…)

其实转换规则很简单, 就是直接根据stamp个秒数, 然后转换成 (年, 月, 日, …)

localtime

struct tm * _t = localtime( &stamp);

这里的local的意思是: 将stamp 这个时间戳, 根据本机系统的时区 (这个系统时区, 也是可以手动修改的), 转换为 一个tm结构体 (这个结构体, 有年月日…)

比如说, 你的系统时区是: UTC +8

  • localtime = gmtime + (8 hours)

<ctime>, clock()相关推荐

  1. <STM32>STM32CubeMX-ADC采集(软件触发)(4)

    <STM32>STM32CubeMX-ADC采集(软件触发单通道)(4) 本节主要讲解ADC采集数据的功能,采集采用软件触发的方式: ADC的详细解说可参考<STM32F4XXX中文 ...

  2. <binding>和<operation>元素

    <binding>和<operation>元素 Binding栏是完整描述协议.序列化和编码的地方,Types, Messages和PortType栏处理抽象的数据内容,而Bi ...

  3. 水鱼 学习回顾 <1>

    学习回顾 <1> 1.注释 2.选择语句 3.循环语句 4.函数 5.数组 6.操作符 7.关键字 8.其他穿插知识点 1.注释 鼠标选中代码块 Ctrl+K+C 快速注释 int num ...

  4. 封装自定义的redis切库工具类ByteArrayRedisTemplate,读取byte数组反序列化成List<Object>

    封装自定义的redis切库工具类ByteArrayRedisTemplate,读取byte数组反序列化成List<Object>(使用lettuce连接池) 代码环境 框架:springb ...

  5. mybatis中<mappers> ,mapperLocations,和MapperScannerConfigurer 用法

    mybatis中<mappers> ,mapperLocations,和MapperScannerConfigurer 用法 1. mappers标签 在mybatis单独使用时,myba ...

  6. 训练时发生的错误:Couldn‘t open shared file mapping: <000001910A228862>, error code: <1455>

    今天在运行TTSR时第14个epoch时发生了以下错误: 看到一篇博客有写: RuntimeError: Couldn't open shared file mapping: <torch_37 ...

  7. C++头文件<functional>和bind、placeholders占位符使用简单例子

    相关博文:C++新特性探究(十五):bind 相关博文:C++头文件<functional>和bind.placeholders占位符使用简单例子 相关博文:<Essential C ...

  8. opencv中 .at<uchar>()和.ptr<uchar>()使用方法的区别

    opencv中 .at<uchar>()和.ptr<uchar>()使用方法的区别在opencv中,.at<uchar>()和.ptr<uchar>() ...

  9. vector<int> v, vector<int> v(n) 与vector<int> v[n]的区别

    一.vector<int> v表示声明一个容器v,并且不给他预定存储空间. 运行: vector<int> v;cout << v.size(); 输出为: 0 二 ...

最新文章

  1. 基础面试题 — 数据结构与算法
  2. 史上第一次,AI能够自学翻译地球上的任何语言了
  3. 3、深入理解计算机系统笔记:程序的机器级表示
  4. 怎么把本地的项目同时提交到两个仓库
  5. C语言20790内所有因子的和,长春市水污染控制指标的因子和聚类分析.pdf
  6. mysql查询返回xml格式_MySQL数据库查询操作XML的经验分享
  7. qt 串口 环形缓存_qt linux串口 缓冲区多大
  8. iOS发展系列II - UILabel 使用摘要
  9. 前端自适应----单位rem
  10. 语音识别端到端模型解读:FSMN及其变体模型
  11. mysql lock trx id_MySQL中RR模式下死锁一例
  12. java 深入io_Java高级编程-IO操作深入
  13. 多线程与多进程(4)
  14. 深度学习优化算法:AdaDelta算法
  15. Gmail使用别名和googlemail.com将邮箱变为多账号
  16. 3年间 女子称遭邻居报复放了上千条虫子
  17. 禁用Insert按键
  18. AcWing - 寒假每日一题2023(DAY 11——DAY 15)
  19. 基于python网络爬虫的个性化音乐播放器
  20. 《女侦探司马楠之箱尸谜案》横店开机 花潼冯荔军热血联手破奇案

热门文章

  1. 【BAT面试必备】一致性哈希算法原理 一文吊打面试官
  2. MySQL高可用架构
  3. Python信号处理小试牛刀——快速傅里叶变换(FFT)
  4. noscript的使用
  5. zlkw什么意思_kw是什么单位
  6. 华为服务器gpu芯片,GPU云运算服务器方案
  7. 个体值0和31差多少攻击_个体值到底重不重要???
  8. android手机制造商_如果您关注更新,则应注意这些Android制造商
  9. 使用cpxfiddle画图,例如phase,magnitude等
  10. 2018年湖北省大学程序设计竞赛 D. Who killed Cock Robin(树形DP)