c++时间格式转换--strftime和strptime使用
2014-09-05 10:39
357 查看
strftime和strptime使用
整理自《linux程序设计》
这两个函数都是时间日期的格式控制函数,在功能上看起来正好相反。strftime将一个tm结构格式化为一个字符串,strptime则是将一个字符串格式化为一个tm结构。
strftime
函数原型:size_t strftime(char *s,size_t maxsize,char *format,const struct tm *timeptr)
strftime函数对timeptr指向的tm结构所代表的时间和日期进行格式编排,其结果放在字符串s中。该字符串的长度被设置为(最少)maxsize个字符。格式字符串format用来对写入字符串的字符进行控制,它包含着将被传送到字符串里去的普通字符以及编排时间和日期格式的转换控制符。转换控制符见下表
转换控制符 | 说明 |
%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 | 地理时区名称 |
strptime
函数原型: char *strptime(const char *buf,const char *format,struct tm *timeptr)
format字符串的构建方式和strftime的format字符串完全一样。strptime返回一个指针,指向转换过程处理的最后一个字符后面的那个字符。
看下边一个程序
?View
Code C
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | [c] view plaincopyprint? <span>#include <stdio.h></span> <span>#include <stdlib.h></span> <span>#include <string.h></span> <span>#include <time.h></span> <span>int</span> main<span>(</span><span>)</span><span>{</span> <span>struct</span> tm <span>*</span>tm_ptr<span>,</span>timestruct<span>;</span> time_t the_time<span>;</span> <span>char</span> <span>*</span>buf<span>[</span><span>256</span><span>]</span><span>;</span> <span>(</span><span>void</span><span>)</span> time<span>(</span><span>&</span>the_time<span>)</span><span>;</span> tm_ptr<span>=</span>localtime<span>(</span><span>&</span>the_time<span>)</span><span>;</span> strftime<span>(</span>buf<span>,</span><span>256</span><span>,</span><span>"%A %d %B,%I:%S %p"</span><span>,</span>tm_ptr<span>)</span><span>;</span> <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span>printf</span></a><span>(</span><span>"strftime gives: %s<span>/n</span>"</span><span>,</span>buf<span>)</span><span>;</span> strcpy<span>(</span>buf<span>,</span><span>"Sat 26 July 2003,17:53 will do fine"</span><span>)</span><span>;</span> <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span>printf</span></a><span>(</span><span>"calling strptime with: %s<span>/n</span>"</span><span>,</span>buf<span>)</span><span>;</span> tm_ptr<span>+&</span>timestruct<span>;</span> result<span>=</span>strptime<span>(</span>buf<span>,</span><span>"%a %d %b %Y,%R"</span><span>,</span>tm_ptr<span>)</span><span>;</span> <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span>printf</span></a><span>(</span><span>"strptime consumed up to: %s<span>/n</span>"</span><span>,</span>result<span>)</span><span>;</span> <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span>printf</span></a><span>(</span><span>"strptime gives:<span>/n</span>"</span><span>)</span><span>;</span> <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span>printf</span></a><span>(</span><span>"date: %02d/%02d/%02d<span>/n</span>"</span><span>,</span>tm_ptr<span>-></span>tm_year<span>%</span><span>100</span><span>,</span>tm_ptr<span>-></span>tm_mon<span>+</span><span>1</span><span>,</span>tm_ptr<span>-></span>tm_mday<span>)</span><span>;</span> <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span>printf</span></a><span>(</span><span>"time: %02d:%02d<span>/n</span>"</span><span>,</span>tm_ptr<span>-></span>tm_hour<span>,</span>tm_ptr<span>-></span>tm_min<span>)</span><span>;</span> exit<span>(</span><span>0</span><span>)</span><span>;</span> <span>}</span> <span>#include <stdio.h></span> <span>#include <stdlib.h></span> <span>#include <string.h></span> <span>#include <time.h></span> <span>int</span> main<span>(</span><span>)</span><span>{</span> <span>struct</span> tm <span>*</span>tm_ptr<span>,</span>timestruct<span>;</span> time_t the_time<span>;</span> <span>char</span> <span>*</span>buf<span>[</span><span>256</span><span>]</span><span>;</span> <span>(</span><span>void</span><span>)</span> time<span>(</span><span>&</span>the_time<span>)</span><span>;</span> tm_ptr<span>=</span>localtime<span>(</span><span>&</span>the_time<span>)</span><span>;</span> strftime<span>(</span>buf<span>,</span><span>256</span><span>,</span><span>"%A %d %B,%I:%S %p"</span><span>,</span>tm_ptr<span>)</span><span>;</span> <a target=_blank href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span>printf</span></a><span>(</span><span>"strftime gives: %s<span>/n</span>"</span><span>,</span>buf<span>)</span><span>;</span> strcpy<span>(</span>buf<span>,</span><span>"Sat 26 July 2003,17:53 will do fine"</span><span>)</span><span>;</span> <a target=_blank href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span>printf</span></a><span>(</span><span>"calling strptime with: %s<span>/n</span>"</span><span>,</span>buf<span>)</span><span>;</span> tm_ptr<span>+&</span>timestruct<span>;</span> result<span>=</span>strptime<span>(</span>buf<span>,</span><span>"%a %d %b %Y,%R"</span><span>,</span>tm_ptr<span>)</span><span>;</span> <a target=_blank href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span>printf</span></a><span>(</span><span>"strptime consumed up to: %s<span>/n</span>"</span><span>,</span>result<span>)</span><span>;</span> <a target=_blank href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span>printf</span></a><span>(</span><span>"strptime gives:<span>/n</span>"</span><span>)</span><span>;</span> <a target=_blank href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span>printf</span></a><span>(</span><span>"date: %02d/%02d/%02d<span>/n</span>"</span><span>,</span>tm_ptr<span>-></span>tm_year<span>%</span><span>100</span><span>,</span>tm_ptr<span>-></span>tm_mon<span>+</span><span>1</span><span>,</span>tm_ptr<span>-></span>tm_mday<span>)</span><span>;</span> <a target=_blank href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span>printf</span></a><span>(</span><span>"time: %02d:%02d<span>/n</span>"</span><span>,</span>tm_ptr<span>-></span>tm_hour<span>,</span>tm_ptr<span>-></span>tm_min<span>)</span><span>;</span> exit<span>(</span><span>0</span><span>)</span><span>;</span> <span>}</span> |
strftime gives:Sunday 06 June, 11:55 AM
calling strptime with:Sat 26 July 2003,17:53 will do fine
strptime consumed up to:will do fine
strptime gives:
date: 03/07/26
time: 17:53
转自http://blog.csdn.net/wisage/article/details/6269218
相关文章推荐
- linux 时间格式化函数strftime和strptime使用
- strftime和strptime使用(时间日期的格式控制函数)
- C/C++时间函数time/localtime/mktime/ctime/strftime使用方法
- linux 时间格式化函数strftime和strptime使用
- strftime和strptime使用(时间日期的格式控制函数)
- strftime和strptime使用(时间日期的格式控制函数)
- C/C++时间函数time/localtime/mktime/ctime/strftime使用方法
- 彻底搞清楚C/C++中日期和时间 time_t与struct tm,time(NULL),ctime;strftime
- C/C++时间函数使用方法
- 彻底搞清楚C/C++中日期和时间 time_t与struct tm,time(NULL),ctime;strftime
- struts2 <s:property/>标签的使用--输出时间格式转换
- C/C++时间函数使用方法
- C/C++时间函数的使用
- C/C++时间函数使用方法介绍(2)
- C/C++时间函数使用方法
- 详细介绍C/C++时间函数使用方法
- C++时间标准库时间time和系统时间的使用
- C/C++时间函数使用方法
- C/C++时间函数使用方法(1)
- C/C++时间函数的使用