概述

  • 标准库 <time.h> 提供了用于日期和时间处理的结构和函数
  • 是C++语言日期和时间处理的基础

与时间相关的类型

  • clock_t,本质是:unsigned long

    typedef unsigned long __darwin_clock_t;
    typedef __darwin_clock_t clock_t;
  • time_t,本质是:long

    typedef long __darwin_time_t;
    typedef __darwin_time_t time_t;
  • size_t,本质是:unsigned long,其中包含条件编译指令

    // size_t
    typedef __darwin_size_t size_t;
    // _darwin_size_t
    #if defined(__SIZE_TYPE__)
    typedef __SIZE_TYPE__ __darwin_size_t;
    #else
    typedef unsigned long __darwin_size_t;
    #endif
  • tm 结构

    struct tm {
    int tm_sec; /* seconds after the minute [0-60] */
    int tm_min; /* minutes after the hour [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 January 1 [0-365] */
    int tm_isdst; /* Daylight Savings Time flag */
    long tm_gmtoff; /* offset from CUT in seconds */
    char *tm_zone; /* timezone abbreviation */
    };

标准库函数

  • time_t time(time_t *time)

    • 返回系统当前日历时间,自1970年1月1日以来经过的秒数;如果系统没有时间,则返回.1,如:1456131213
    time_t seconds;
    seconds = time(0);
  • char *ctime(const time_t *time)

    • 返回一个表示当地时间的字符串指针,格式为:Wed Feb 17 15:23:46 2016(与系统有关)
    char *date = ctime(&seconds);
  • struct tm *localtime(const time_t *time)

    • 返回指向表示本地时间的tm结构的指针
    tm *localTime = localtime(&seconds);
  • clock_t clock(void)

    • 该函数返回程序执行起(一般为程序的开头),处理器时钟所使用的时间,如:1456102413
    clock_t clockTime = clock();
  • char *asctime(const struct tm *time)

    • 该函数返回一个指向字符串的指针,字符串包含了 localTime 所指向结构中存储的信息,格式为:Wed Feb 17 15:48:45 2016
    date = asctime(localTime);
  • struct tm *gmtime(const time_t *time)

    • 该函数返回一个指向 localTime 的指针,localTime 为 tm 结构,用协调世界时(UTC)也被称为格林尼治标准时间(GMT)表示
    localTime = gmtime(&seconds);
    date = asctime(localTime);
  • time_t mktime(struct tm *time)

    • 该函数返回日历时间,相当于 time 所指向结构中存储的时间
    seconds = mktime(localTime);
  • double difftime(time_t time2, time_t time1)

    • 该函数返回 time1 和 time2 之间相差的秒数
    double difference = difftime(seconds, seconds1);
  • size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr)

    `

    • 可用于格式化日期和时间为指定的格式

    • 格式说明符

      明符 含义 示例
      缩写的星期几名称 Sun
      完整的星期几名称 Sunday
      缩写的月份名称 march
      日期和时间表示法 Wed Feb 17 08:07:12 2016
      一月中的第几天(01-31) 28
      24 小时格式的小时(00-23) 23
      12 小时格式的小时(01-12) 09
      一年中的第几天(001-366) 366
      十进制数表示的月份(01-12) 09
      分(00-59) 59
      AM 或 PM 名称 PM
      秒(00-59) 09
      一年中的第几周,以第一个星期日作为第一周的第一天(00-53) 53
      十进制数表示的星期几,星期日表示为 0(0-6) 6
      一年中的第几周,以第一个星期一作为第一周的第一天(00-53) 1
      日期表示法 02/17/16
      时间表示法 08:14:44
      份,最后两个数字(00-99) 99
      年份 2016
      时区的名称或缩写 CST
      一个 % 符号 %
    • 示例

      strftime(date, 99, "%Y年%m月%d日 %A %p %I:%M:%S", localTime);
      // 打印结果:2016年02月22日 Monday AM 08:53:33

示例

  • 完整代码

      ```
    #include <stdio.h>
    #include <time.h>
    int main(int argc, const char * argv[]) {
    //
    time_t seconds;
    seconds = time(0);
    printf("%ld\n", seconds);
    //
    char *date = ctime(&seconds);
    printf("%s\n", date);
    //
    struct tm *localTime = localtime(&seconds);
    printf("%d\n", localTime->tm_sec);
    //
    clock_t clockTime = clock();
    printf("%lu\n", clockTime);
    //
    date = asctime(localTime);
    printf("%s\n", date);
    //
    localTime = gmtime(&seconds);
    date = asctime(localTime);
    printf("%s\n", date);
    //
    time_t seconds1 = mktime(localTime);
    printf("%ld\n", seconds1);
    //
    double difference = difftime(seconds, seconds1);
    printf("%f\n", difference);
    //
    strftime(date, 99, "%Y年%m月%d日 %A %p %I:%M:%S", localTime);
    printf("%s\n", date);
    return 0;
    }
    ```

C语言-12-日期和时间处理标准库详细解析及示例的更多相关文章

  1. python中时间处理标准库DateTime加强版库:pendulum

    DateTime 的时区问题 Python的datetime可以处理2种类型的时间,分别为offset-naive和offset-aware.前者是指没有包含时区信息的时间,后者是指包含时区信息的时间 ...

  2. 10个用于处理日期和时间的 Python 库

    Python本身提供了处理时间日期的功能,也就是datetime标准库.除此之外,还有很多优秀的第三方库可以用来转换日期格式,格式化,时区转化等等.今天就给大家分享10个这样的Python库. 上期入 ...

  3. Linux 查看支持的语言,日期,时间,计算器

    1.查看系统目前支持的语言 echo %LANG 2.查看日历 cal 3.查看日期时间 date 4.计算器 bc

  4. 2-8 R语言基础 日期与时间

    #日期 Date > x<-date()> class(x)[1] "character" > x2 <- Sys.Date()> class( ...

  5. rtmp官方标准规范详细解析

    标准规范学习: rtmp消息结构,包括几个部分: 时戳:4  byte,单位毫秒.超过最大值后会翻转. 长度:消息负载的长度. 类型ID:Type Id 一部分ID范围用于rtmp的控制信令.还有一部 ...

  6. datetime日期和时间

    datetime是Python处理日期和时间的标准库. from datetime import datetime # 获取当前时间 now = datetime.now() print(now) # ...

  7. python3关于date和time的标准库

    python3中关于日期和时间的标准库datetime和time,之前都是用的时候随用随查,今天系统的看一下用这两个库可以做些什么. 1.time标准库 #首先添加一个time对象,看一下该对象的属性 ...

  8. Java基础之一组有用的类——生成日期和时间(TryDateFormats)

    控制台程序. java.util包中含有相当多的类涉及日期和时间,包括Date类.Calendar类和GregorianCalendar类. Date类对象其实定义了精确到毫秒的时刻,从1970年1月 ...

  9. C++日期和时间

    C++ 日期 & 时间 C++ 标准库没有提供所谓的日期类型.C++ 继承了 C 语言用于日期和时间操作的结构和函数.为了使用日期和时间相关的函数和结构,需要在 C++ 程序中引用 <c ...

随机推荐

  1. Nginx+CI出现404错误

    最近刚学ci框架,做了个简单的项目,在本地搭服务器的环境都调通了,但是部署到远程服务器时: http://example.com/(index.php)/ 可以访问(为配置的默认controller- ...

  2. Mysql学习笔记(八)索引

    PS:把昨天的学习内容补上...发一下昨天学的东西....五月三日...继续学习数据库... 学习内容: 索引.... 索引的优点: 1.通过创建唯一索引,可以保证数据库每行数据的唯一性... 2.使 ...

  3. 最近读cocoaui源代码有感

    上半年为了做一个ios的应用,引入了cocoaui库,主要是用来布局ios界面,发现简化了不少代码和工作量.因为在写第一个ios应用的时候,用的代码布局,在适配4s和6的机型时候,几乎被搞死,大量的约 ...

  4. [Architect] Abp 框架原理解析(1) Module

    本节目录 Abp介绍 Abp源码分析 代码实现 Abp介绍 学习了一段时间的Abp,领略了一下前辈的架构.总结还是SOLID,降低耦合性. 虽然从架构上说甚至不依赖于DI框架,但实际上在基础框架中还是 ...

  5. P6 EPPM Manual Installation Guide (Oracle Database)

    P6 EPPM Manual Installation Guide (Oracle Database) P6 EPPM Manual Installation Guide (Oracle Databa ...

  6. How to Convert Subversion Repo to Git

    用了比较长时间的 SVN,但现在新的项目都采用Git.之前的项目又不得不维护,那么能不能将项目从SVN迁移到Git呢.答案是肯定的,网上的方案是 git-svn,或者更高级的封装 svn2git. 方 ...

  7. [新手学Java]使用内省(Introspector)操作JavaBean属性

    获取类bean中的所有属性: @Test //获取类bean中的所有属性 public void test1() throws Exception{ BeanInfo info = Introspec ...

  8. 分享一下学习css,js心得

    简化代码,使页面简洁! web前端开发——将界面更好呈现给用户! 要了解在不同浏览器上的兼容情况.渲染原理和存在的bug! 网站性能优化.SEO: 代码的可维护性.性能: 网站重构的本质:建立一个前端 ...

  9. csharp: Speech

    Speech SDK 5.1https://www.microsoft.com/en-us/download/details.aspx?id=10121 detects mobile devices ...

  10. 常用 Git 命令清单(摘录)

    来源:阮一峰的网络日志 网址:http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html 我每天使用 Git ,但是很多命令记不住. 一般来 ...