• 时间编程


    使用Linux时间编程相关函数,编写程序,通过实现与函数asctime相同功能的函数获取本地时间,以格式字符串方式显示

    概念:日历时间,通过time_t数据类型来表示,从一个时间点(通常是1970年1月1日0时0分0秒)到此时的秒数。

    格林威治时间:由英国皇家格林尼治天文台提供的标准时间。

    本地时间:根据格林威治时间和本地时区计算出的时间。

    1、获取当前的系统时间--time

    头文件:#include<time.h>

    函数原型:time_t time(time_t *timer)

    参数说明:timer:timer=NULL时得到系统日历时间,timer等于时间数值时,用于设置日历时间。

    返回值:返回日历时间。

    2、通过日历时间获得本地时间--localtime

    函数原型:struct tm *localtime(const time_t *clock)

    参数说明:clock指向日历时间的指针变量。

    返回值:返回指向tm结构体的指针。

    3、通过日历时间获得格林威治时间---gmtime

    函数原型:struct tm *gmtime(long *clock)

    参数说明:clock指向日历时间的指针变量

    返回值:返回指向tm结构体的指针。

    4、转换日期和时间为ASCII码---asctime

    函数原型:char *asctime(const struct tm *tblock)

    参数说明:tblock记录时间的tm结构

    返回值:返回字符串格式:星期,月,日,小时:分:秒,年。

    5、把日期和时间转换为字符串---ctime

    函数原型:char *ctime(const time_t *time);

    参数说明:time指向日历时间的指针变量,该参数应由函数time函数获得。

    返回值:返回字符串格式:星期,月,日,小时;分;秒,年

    6、取得目前时间-----gettimeofday

    函数原型:int gettimeofday(struct timeval *tv,struct timezone *tz);

    参数说明:tv当前timeval结构;tz时区结构。

    返回值:成功0,失败-1.

    7、把日期和时间转换为字符串---settimeofday

    函数原型:int settimeofday(const struct timeval *tv,const struct timezone *tz);

    参数说明:tv:当前timeval结构;tz:时区结构。

    返回值:成功0,失败-1.

    tm结构体:是C语言中用于表示日期和时间的结构体,

    struct tm

    {

    int tm_sec;//表示秒数,在0-61之间,多出来的2秒是用来处理跳秒问题用的

    int tm_min;//表示分数,0-59之间

    int tm_hour;//表示时数,0-23之间

    int tm_mday;//表示本月第几日,[1,31]之间

    int tm_mon;//表示本年第几月[0,11]

    int tm_year;//从1900到现在的年数

    int tm_wday;//本周第几日,[0-6]之间

    int tm_yday;//本年第几日[0,365],闰年有366

    int tm_isday;//是否为日光节约时间

    };

    sprintf---把格式化的数据写入某个字符串

    函数原型:int sprintf(char *buffer,const char *format);

    返回值:字符串长度(strlen)

    注意sprintf输出的数据到字符串buffer中,printf将数据输出到命令行。

    获取本地时间,以格式字符串方式显示

    总结:通过本实验可以看出,要获得本地时间字符串,一般需要三个步骤:

    1、通过time函数获得日历时间

    2、通过localtime函数将日历时间转化为本地时间

    3、通过asctime函数将本地时间转化为字符串

    当然,可以不经过步骤2),直接使用ctime从日历时间获得时间字符串。

  • 相关阅读:
    wsl 如何去掉 windows 的环境变量
    wget出现Unable to establish SSL connection
    openssh 升级
    element/JS文件上传和下载excel问题
    mysql操作过程中常见问题汇总
    [VB.NET Tips]线程传递参数四种方法
    主路由拨号_openwrt做旁路由_ipv4端口映射的设置
    Openwrt_Linux_crontab任务_顺序执行脚本
    Armbian_笔记
    Debian10_Centos8_fail2ban
  • 原文地址:https://www.cnblogs.com/gary-guo/p/5556032.html
Copyright © 2020-2023  润新知