zoukankan      html  css  js  c++  java
  • 系统时间接口与数据结构

    1、time_t类型定义如下:

    typedef long     time_t;            /* 时间值time_t 为长整型的别名*/

    2、struct tm 结构定义如下:

    struct tm {
            int tm_sec;                  /* 秒 – 取值区间为[0,59] */
            int tm_min;                 /* 分 - 取值区间为[0,59] */
            int tm_hour;               /* 时 - 取值区间为[0,23] */
            int tm_mday;              /* 一个月中的日期 - 取值区间为[1,31] */
            int tm_mon;               /* 月份(从一月开始,0代表一月) - 取值区间为[0,11] */
            int tm_year;               /* 年份,其值等于实际年份减去1900 */
            int tm_wday;              /* 星期 – 取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推 */
            int tm_yday;              /* 从每年的1月1日开始的天数 – 取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推 */
            int tm_isdst;              /* 夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。*/
            };

    3-1、接口time()

    函数原型

    time_t time(time_t* t)

    函数功能

    得到自 Unix 纪元(January 1 1970 00:00:00 GMT)起的当前时间的秒数。

    参数介绍

    如果t是空指针,直接返回当前时间。如果t不是空指针,返回当前时间的同时,将返回值赋予t指向的内存空间。

    返回值

    返回一个包含当前时间的 Unix 时间戳的整数。

    头文件

    <time.h>

    代码示例

     

     

     

     

     

     

     

     

    3-2、接口localtime()

    函数原型

    struct tm *localtime(const time_t *clock);

    函数功能

    取当前本地时间

    参数介绍

    一般由time()所获得

    返回值

    返回指向tm 结构体的指针.tm结构体是time.h中定义的用于分别存储时间的各个量(年月日等)的结构体

    头文件

    <time.h>

    你码示例:

    #include "stdio.h"
    #include "time.h"
    #include "stdlib.h"
    int main(void)
    {
    time_t t;
    struct tm *area;
    char buff[64] = {0};

    t = time(NULL);
    area = localtime(&t);

    snprintf(buff, 63, "%04d-%02d-%02d %02d:%02d:%02d",
    (1900+area->tm_year),        //此处需加上1900
    (1+area->tm_mon),              //此处需加1,因为月份是从0开始的
    area->tm_mday,
    area->tm_hour,
    area->tm_min,
    area->tm_sec);

    printf("buff = %s ",buff);

    return 0;
    }

    运行结果:buff = 2015-07-14 11:03:51

     

     

     

     

     

     

     

     

     

    3-3、接口gmtime()

    函数原型

    struct tm *gmtime(const time_t *time);

    函数功能

    把日期和时间转换为格林威治(GMT)时间的函数。

    参数介绍

    一般由time()所获得

    返回值

    将参数time 所指的time_t 结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果由结构tm返回。

    头文件

    <time.h>

    你码示例:

    #include "stdio.h"
    #include "time.h"
    #include "stdlib.h"
    int main(void)
    {
    time_t t;
    struct tm *gmt;
    char buff[64] = {0};

    t = time(NULL);
    gmt = gmtime(&t);

    snprintf(buff, 63, "%04d-%02d-%02d %02d:%02d:%02d",
    (1900+gmt->tm_year),        //此处需加上1900
    (1+gmt->tm_mon),              //此处需加上1
    gmt->tm_mday,
    gmt->tm_hour+8,                //此处需加上8
    gmt->tm_min,
    gmt->tm_sec);

    printf("buff = %s ",buff);

    return 0;
    }

    运行结果:buff = 2015-07-14 11:46:56

    3-4、接口strftime()

    函数原型

    size_t strftime(char *strDest,size_t maxsize,const char *format,const  struct tm *timeptr);

    函数功能

    将 *timeptr所指内存中的时间格式化到*strDest所指的内存中

    参数介绍

    我们可以根据format指向字符串中格式命令把timeptr中保存的时间信息放在strDest指向的字符串中,
    最多向strDest中存放maxsize个字符。该函数返回向strDest指向的字符串中放置的字符数。
     
    %a 星期几的简写
    %A 星期几的全称
    %b 月份的简写
    %B 月份的全称
    %c 标准的日期的时间串
    %C 年份的前两位数字
    %d 十进制表示的每月的第几天
    %D 月/天/年
    %e 在两字符域中,十进制表示的每月的第几天
    %F 年-月-日
    %g 年份的后两位数字,使用基于周的年
    %G 年份,使用基于周的年
    %h 简写的月份名
    %H 24小时制的小时
    %I 12小时制的小时
    %j 十进制表示的每年的第几天
    %m 十进制表示的月份
    %M 十时制表示的分钟数
    %n 新行符
    %p 本地的AM或PM的等价显示
    %r 12小时的时间
    %R 显示小时和分钟:hh:mm
    %S 十进制的秒数
    %t 水平制表符
    %T 显示时分秒:hh:mm:ss
    %u 每周的第几天,星期一为第一天 (值从1到7,星期一为1)
    %U 第年的第几周,把星期日作为第一天(值从0到53)
    %V 每年的第几周,使用基于周的年
    %w 十进制表示的星期几(值从0到6,星期天为0)
    %W 每年的第几周,把星期一做为第一天(值从0到53)
    %x 标准的日期串
    %X 标准的时间串
    %y 不带世纪的十进制年份(值从0到99)
    %Y 带世纪部分的十制年份
    %z,%Z 时区名称,如果不能得到时区名称则返回空字符。
     

    返回值

    头文件

    <time.h>

    代码示例

    #include "stdio.h"
    #include "time.h"
    #include "stdlib.h"
    int main(void)
    {
    static char buf[200];
    struct tm *area;

    time_t tt = time(NULL);
    area = localtime(&tt);
    strftime(buf, sizeof(buf), "Date: %a, %d %b %Y %H:%M:%S GMT ",area);
    printf("%s", buf);

    return 0;
    }

    运行结果:Date: Tue, 14 Jul 2015 14:50:42 GMT

      

    3-5、接口asctime()

    函数原型

    char* asctime (const struct tm * timeptr).

    函数功能

    把timeptr指向的tm结构体中储存的时间转换为字符串格式

    参数介绍

    一般由time()所获得

    返回值

    返回格式化后的字符串

    头文件

    <time.h>

    代码示例

    #include "stdio.h"
    #include "time.h"
    #include "stdlib.h"
    int main(void)
    {
    time_t t;
    struct tm *area;

    t = time(NULL);
    area = localtime(&t);
    printf("Local time is: %s", asctime(area));

    return 0;
    }

    运行结果:Local time is: Tue Jul 14 15:05:40 2015

  • 相关阅读:
    Discuz 网站移至 Ubuntu 14.04.4 LTS VPS 配置
    ubuntu的一些常用命令,测试版本:Ubuntu 12.04.5 LTS
    文本的水平对齐方式,带来的一系列问题
    庆祝我的Blog开张了,今天起和大家一起见证一款原生的富文本编辑组件FoxJsonRichView的诞生过程。
    竖直导航(一)
    测试
    第七次作业
    第六次作业
    第四次作业
    第五次作业
  • 原文地址:https://www.cnblogs.com/xiehy/p/4644762.html
Copyright © 2011-2022 走看看