词条 | strftime |
释义 | strftime,是一种计算机函数,strftime() 函数根据区域设置格式化本地时间/日期,函数的功能将时间格式化,或者说格式化一个时间字符串。 函数简介函数功能:将时间格式化,或者说:格式化一个时间字符串。 头文件:time.h 函数原型:我们可以使用strftime()函数将时间格式化为我们想要的格式。它的原型如下: size_t strftime( char *strDest, size_t maxsize, const char *format, const struct tm *timeptr ); 参数说明: 我们可以根据format指向字符串中格式命令把timeptr中保存的时间信息放在strDest指向的字符串中,最多向strDest中存放maxsize个字符。该函数返回向strDest指向的字符串中放置的字符数。 函数strftime()的操作有些类似于sprintf():识别以百分号(%)开始的格式命令集合,格式化输出结果放在一个字符串中。格式化命令说明串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 每周的第几天,星期一为第一天 (值从0到6,星期一为0) %U 第年的第几周,把星期日作为第一天(值从0到53) %V 每年的第几周,使用基于周的年 %w 十进制表示的星期几(值从0到6,星期天为0) %W 每年的第几周,把星期一做为第一天(值从0到53) %x 标准的日期串 %X 标准的时间串 %y 不带世纪的十进制年份(值从0到99) %Y 带世纪部分的十制年份 %z,%Z 时区名称,如果不能得到时区名称则返回空字符。 %% 百分号 语法 strftime(format,timestamp)参数 描述 format 可选。规定如何返回结果。 timestamp 可选。 提示和注释 提示:与 gmstrftime() 的行为相同,不同的是返回时间是本地时间。 例子 输出 strftime() 和 gmstrftime() 的结果: <?php echo(strftime("%b %d %Y %X", mktime(20,0,0,12,31,98))); echo(gmstrftime("%b %d %Y %X", mktime(20,0,0,12,31,98))); //输出当前日期、时间和时区 echo(gmstrftime("It is %a on %b %d, %Y, %X time zone: %Z",time())); ?>输出: Dec 31 1998 20:00:00 Dec 31 1998 19:00:00 It is Wed on Jan 25, 2006, 11:32:10 time zone: W. Europe Standard Time 程序示例如果想显示现在是几点了,并以12小时制显示,就象下面这段程序: #include "time.h" #include "stdio.h" int main(void) { struct tm *ptr; time_t lt; char str[80]; lt=time(NULL); ptr=localtime(<); strftime(str,sizeof(str),"It is now %I %p",ptr); printf("%s\",str); return 0; } 其运行结果为: It is now 4PM 而下面的程序则显示当前的完整日期: #include<stdio.h> #include<time.h> int main( void ) { struct tm *newtime; char tmpbuf[128]; time_t lt1; time(<1); newtime=localtime(<1); strftime( tmpbuf, 128, "Today is %A, day %d of %B in the year %Y.\", newtime); printf("%s\",tmpbuf); return 0; } 运行结果: Today is Saturday, day 30 of July in the year 2005. 通过调整函数中参数类型,可以得到我们想要的时间格式: #include <stdio.h> #include <time.h> int main () { time_t rawtime; struct tm * timeinfo; char timE [80]; time ( &rawtime ); timeinfo = localtime ( &rawtime ); strftime ( timE,80,"Data:\%Y-%m-%d \Time:\%I:%M:%S\",timeinfo); printf ("%s", timE); return 0; } 输出: Data: 2010-09-02 Time: 04:22:11 Press any key to continue 这样就得到了我们常见的时间格式。 ISO 8601:1988<?php /* December 2002 / January 2003 ISOWk M Tu W Thu F Sa Su ----- ---------------------------- 51 16 17 18 19 20 21 22 52 23 24 25 26 27 28 29 1 30 31 1 2 3 4 5 2 6 7 8 9 10 11 12 3 13 14 15 16 17 18 19 */ // Outputs: 12/28/2002 - %V,%G,%Y = 52,2002,2002 print "12/28/2002 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("12/28/2002")) . "\"; // Outputs: 12/30/2002 - %V,%G,%Y = 1,2003,2002 print "12/30/2002 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("12/30/2002")) . "\"; // Outputs: 1/3/2003 - %V,%G,%Y = 1,2003,2003 print "1/3/2003 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("1/3/2003")) . "\"; // Outputs: 1/10/2003 - %V,%G,%Y = 2,2003,2003 print "1/10/2003 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("1/10/2003")) . "\"; /* December 2004 / January 2005 ISOWk M Tu W Thu F Sa Su ----- ---------------------------- 51 13 14 15 16 17 18 19 52 20 21 22 23 24 25 26 53 27 28 29 30 31 1 2 1 3 4 5 6 7 8 9 2 10 11 12 13 14 15 16 */ // Outputs: 12/23/2004 - %V,%G,%Y = 52,2004,2004 print "12/23/2004 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("12/23/2004")) . "\"; // Outputs: 12/31/2004 - %V,%G,%Y = 53,2004,2004 print "12/31/2004 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("12/31/2004")) . "\"; // Outputs: 1/2/2005 - %V,%G,%Y = 53,2004,2005 print "1/2/2005 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("1/2/2005")) . "\"; // Outputs: 1/3/2005 - %V,%G,%Y = 1,2005,2005 print "1/3/2005 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("1/3/2005")) . "\"; ?> |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。