首页 > 代码库 > linux中常用时间和字符串之间相互转化

linux中常用时间和字符串之间相互转化

在Linux中经常会遇到时间和字符串相互转化的情形,有两个函数专门对应相应的转化。

1、时间转字符串函数strftime

函数原型:size_t strftime(char *s,size_t maxsize,char *format,conststruct tm *timeptr)

strftime函数对timeptr指向的tm结构所代表的时间和日期进行格式编排,其结果放在字符串s中。该字符串的长度被设置为(最少)maxsize个字符。格式字符串format用来对写入字符串的字符进行控制,它包含着将被传送到字符串里去的普通字符以及编排时间和日期格式的转换控制符。

输入:const struct tm *timeptr

输出:char *s,size_t maxsize,char *format

2、字符串转时间函数strptime

函数原型: char *strptime(const char *buf,const char*format,struct tm *timeptr)

format字符串的构建方式和strftime的format字符串完全一样,strptime返回一个指针,指向转换过程处理的最后一个字符后面的那个字符,

输入:const char *buf,const char *format

输出:struct tm *timeptr

实验代码:

#include <stdio.h>
#include <time.h>


int main()
{
struct tm tm_time;
strptime("2010-11-15 10:39:30", "%Y-%m-%d %H:%M:%S", &tm_time);
printf("%ld/n", mktime(&tm_time));
printf("-------------------------------------/n");


char szBuf[256] = {0};
time_t timer = time(NULL);
strftime(szBuf, sizeof(szBuf), "%Y-%m-%d %H:%M:%S", localtime(&timer));
printf("%s/n", szBuf);

return 0;
}

运行结果:

 1289788770

-------------------------------------

2017-07-11 19:4

 

转换控制符见下表:

转换控制符

说明

%a

星期几的简写形式

%A

星期几的全称

%b

月份的简写形式

%B

月份的全称

%c

日期和时间

%d

月份中的日期,0-31

%H

小时,00-23

%I

12进制小时钟点,01-12

%j

年份中的日期,001-366

%m

年份中的月份,01-12

%M

分,00-59

%p

上午或下午

%S

秒,00-60

%u

星期几,1-7

%w

星期几,0-6

%x

当地格式的日期

%X

当地格式的时间

%y

年份中的最后两位数,00-99

%Y

%Z

地理时区名称

 

linux中常用时间和字符串之间相互转化