概述

  • 标准库 <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. 自动化回归测试案例评价标准 MeRest

    自动化回归测试案例评价标准试图定义不同维度来评价自动化案例的优劣,作为后续我们评判讨论测试框架.测试技术和测试案例编写模式的基础.那什么是好的自动化回归测试案例呢?简而言之,就是投资回报率高的案例,因 ...

  2. WCF小白初试 错误之一:“有零个应用程序终结点”的解决办法

    遇到这类问题 应该是配置文件出现了问题 解决办法是将配置文件中的<service name="命名空间+类名">就可以解决

  3. 剑指架构师系列-Hibernate需要掌握的Annotation

    1.一对多的关系配置 @Entity @Table(name = "t_order") public class Order { @Id @GeneratedValue priva ...

  4. python读取xml文件

    关于python读取xml文章很多,但大多文章都是贴一个xml文件,然后再贴个处理文件的代码.这样并不利于初学者的学习,希望这篇文章可以更通俗易懂的教如何使用python 来读取xml 文件. 什么是 ...

  5. 关于JQUERY操作XML问题!

    使用JQUERY操作XML方法: 1.$.get(”xml文件路径",function(data){}); 2.$.Post(”xml文件路径",function(data){}) ...

  6. JavaScript中经典方法

    jQuery()通过name名称获取当前name中value数组 /** 获取input中name属性相同的 value数组 */ function my_array_name(m){ var val ...

  7. 关于 CommonJS AMD CMD UMD 规范的差异总结

    一.CommonJS 主要是用于服务器端的规范,比如目前的nodeJS. 根据CommonJS规范,一个单独的文件就是一个模块.每一个模块都是一个单独的作用域,也就是说,在一个文件定义的变量(还包括函 ...

  8. IT人生思考

    夜已深,心里却十分清醒... 说说,这段时间经历的事情吧.我是一枚IT菜鸟,2014年毕业于武汉软件工程职业学院.大学时代,虽然没翘过课,专业学的也不是特别好.当时也没有想过毕业会从事IT行业.只是想 ...

  9. [CLR via C#]8. 方法

    一.实例构造器和类(引用类型) 类实例构造器是允许将类型的实例初始化为良好状态的一种特殊的方法. 类实例构造器方法在"方法定义元数据表"中始终叫.ctor(代表constructo ...

  10. windbg学习进阶之——dump分析常用命令收集

    #重要说明 (1) windbg命令分为标准命令,元命令和扩展命令. 标准命令提供最基本的调试功能,不区分大小写.如:bp  g  dt  dv  k等 元命令提供标准命令没有提供的功能,也内建在调试 ...