linux下time相关的API总结

一:相关函数原型

       #include <time.h>
       time_t time(time_t *t);
       char *asctime(const struct tm *tm);
       char *ctime(const time_t *timep);
       struct tm *gmtime(const time_t *timep);
       struct tm *localtime(const time_t *timep);
       time_t mktime(struct tm *tm);
      char *strptime(const char *s, const char *format, struct tm *tm);
      size_t strftime(char *s, size_t max, const char *format,
                                                 const struct tm *tm);
          struct tm {
               int tm_sec;         /* seconds */
               int tm_min;         /* minutes */
               int tm_hour;        /* hours */
               int tm_mday;        /* day of the month */
               int tm_mon;         /* month */
               int tm_year;        /* year */
               int tm_wday;        /* day of the week */
               int tm_yday;        /* day in the year */
               int tm_isdst;       /* daylight saving time */
           };

二:API归类

time()用于当前时间戳,如果t不为空那么返回的时间戳同样也会存储在t中。

asctime()传入一个tm的时间结构体,返回这个可读性好的时间字符串

ctime()功能和asctime相同,但是ctime功能更强,可以将time_t类型的时间戳转换

成可读性好的时间字符串。

gmtime()传入一个time_t 类型的时间值,将其转换成一个时间tm结构体,但是gmtime 有一个缺点返回的时候格式是UTC时间,不是当前主机时区的时间。

localtime()和gmtime功能相同,只不过localtime返回的是当前主机时区的时间。

mktime()传入一个tm结构体将其转换成time_t类型的时间戳。

strftime()传入一个tm结构体和格式化字符串,根据格式化字符串将其格式会相对应的时间格式。

strptime()传入一个时间字符串,指定其格式,将其转换成tm的时间结构体

asctime() ctime()可分为一类,针对不同的参数使用不同的函数。

gmtime() localtime()分为一类,根据是否对时区又要求来使用。

strftime() strptime()分为一类,处理格式化时间字符串。

time() 用于获取当前时间

三:API函数相关使用

#include<stdio.h>
#include<stdlib.h>
#define _XOPEN_SOURCE #这句没有的话,编译会有警告信息,GUN库中没有strptime声明
#include<time.h>

time_t return_current_time();
void print_time(time_t tdata);

int main ( int argc, char *argv[] )
{

        print_time(return_current_time());
        return EXIT_SUCCESS;
}
void print_time(time_t tdata)
{
        char *wday[]={"SUn","Mon","Tue","Wed","Thu","Fri","Sat"};
        struct tm *pt;
        time_t tmp;
        char buf[256];
        //指定输出字符串的格式
        char *format = "%A %d %B, %I:%S %p";
//      pt = gmtime(&tdata);
        pt = localtime(&tdata);
        printf("%ld:convert to time:\n",tdata);
        printf("isdst:%d\n",pt->tm_isdst);
        printf("year:%d年\n",pt->tm_year+1900);
        printf("mon:%d月\n",pt->tm_mon+1);
        printf("mday:%d日\n",pt->tm_mday);
        printf("week:%s\n",wday[pt->tm_wday]);
        printf("hour:%d小时\n",pt->tm_hour);
        printf("min:%d分钟\n",pt->tm_min);
        printf("sec:%d秒\n",pt->tm_sec);
        printf("asctime的输出\n");
        printf("%s\n",asctime(pt));
        printf("Ctime 输出:\n");
        printf("%s\n",ctime(&tdata));
        printf("mktime将tm结构转换成time_t类型的值\n");
        if((tmp = mktime(pt)) == -1){
                perror("mktime error:");
                exit(1);
        }
        printf("mktime convert to time_t:%ld\n",tmp);
        printf("strftime的使用:\n");
        if(strftime(buf,256,format,pt) == -1){
                perror("strftime error:");
                exit(1);
        }
        printf("%s\n",buf);
        printf("strptime的使用:\n");
        #buf中存放的是指定format格式的时间字符串,根据其fotamt再转换成tm结构体
        strptime(buf,format,pt);

}
#获取当前的时间
time_t return_current_time ()
{
        return time((time_t *)0);
}
时间: 2024-08-07 00:42:14

linux下time相关的API总结的相关文章

linux下网卡相关查看设置

查整机硬件信息命令dmesg 查看网卡设备相关dmesg | grep eth 查看网卡eth0信息dmesg | grep eth0 使用ethtool命令查看指定网卡信息ethtool eth0 使用 mii-tool命令查看指定网卡情况mii-tool -v eth1 为了使用lspci命令需要安装以下软件包yum -y install pciutils 查看pci接口硬件信息lspci 在linux的proc文件系统中,通过查看/proc/net/dev文件可以得到每个网络接口的吞吐量c

Linux下GCC相关知识点

摘要: 总结GCC的具体使用,动态库静态库的相关问题 参考资料: <Linux网络编程> ISBN:9787302207177 p19 1 GCC简介 GCC是Linux下的编译工具集,是GNU Compiler Collection的缩写,包含gcc,g++等编译器,还有工具集如ar,nm GCC工具集不仅能编译C/C++,还能编译其他语言如Objective-C GCC还能进行交叉编译 文件扩展名含义: 默认路径: 2 编译步骤 预编译:将头文件包含进源代码,并对一些宏进行替换 编译和优化

linux下分区相关知识

Linux 规定了主分区(或者扩展分区)占用 1 至 16 号码中的前 4 个号码.以第一个 IDE 硬盘为例说明,主分区(或者扩展分区)占用了 hda1.hda2.hda3.hda4,而逻辑分区占用了 hda5 到 hda16 等 12 个号码.因此,Linux 下面每一个硬盘总共最多有 16 个分区. 因此 hda1- hda4 是主区的意思. hda5以后是逻辑分区!! Linux下,每一个硬盘设备都被映射到一个系统的设备文件:对于磁盘,光驱等IDE或者SCSI设备也不例外. 此处要渗透一

Linux下mysql相关设置

在Linux下安装完mysql之后,通常需要作如下修改才能比较方便地使用 1.  添加一个远程连接用户 通常我们需要从外部远程连接mysql数据库,mysql数据库默认是没有设置允许远程连接的用户的,我们需要自己添加. 可以先查看当前mysql数据库中已存在的用户: use mysql; select host,user,password from user; 以上结果中,host表示允许该用户连接到数据库的主机,user表示用户名,password表示密码 添加一个新的用户: GRANT AL

linux下进程相关操作

一.定义和理解 狭义定义:进程是正在运行的程序的实例. 广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动. 进程的概念主要有两点: 第一,进程是一个实体.每一个进程都有它自己的地址空间,一般情况下,包括文本区域.数据区域和堆栈区域.文本区域存储处理器执行的代码:数据区域存储变量和进程执行期间使用的动态分配的内存:堆栈区域存储着活动过程调用的指令和本地变量. 第二,进程是一个“执行中的程序”.程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体,我们

LINUX下ORACLE相关的内核参数详解

ORACLE相关的内核参数详解 1.kernel.sem [[email protected] ~]# cat /proc/sys/kernel/sem 250         32000    100         142 [[email protected] ~]#  ipcs -sl ------ Semaphore Limits -------- max number of arrays = 142 max semaphores per array = 250 max semaphor

linux下LVM相关知识(动态增减LVM,快照功能)的总结

一,什么是LVM LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性.LVM是磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统.物理卷(physical volume)物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质

Linux下tomcat相关操作

tomcat安装: 直接到官网下载tar包解压即可. tomcat相关操作: 首先,进入Tomcat下的bin目录,例如:cd /usr/tomcat/bin 启动Tomcat:./startup.sh 关闭Tomcat:./shutdown.sh 查看Tomcat是否关闭:ps -ef|grep java,若信息较多表示未关闭,反之已关闭. 如果你想直接干掉Tomcat,你可以使用kill命令,直接杀死Tomcat进程:例如可以根据上面查看tomcat是否关闭的命令获取到进程ID,然后直接ki

linux下使用hiredis异步API实现sub/pub消息订阅和发布的功能

最近使用redis的c接口--hiredis,使客户端与redis服务器通信,实现消息订阅和发布(PUB/SUB)的功能,我把遇到的一些问题和解决方法列出来供大家学习. 废话不多说,先贴代码. redis_publisher.h /************************************************************************* > File Name: redis_publisher.h > Author: chenzengba > Ma