<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>https://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>https://jackxiang.com/post//</link>
<title><![CDATA[时间和日期函数]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Wed, 14 Oct 2009 04:48:41 +0000</pubDate> 
<guid>https://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	<br/>asctime：日期和时间转换函数<br/>函数原型：char *asctime(const struct tm *tblock)<br/><br/>头文件：#include<time.h><br/><br/>是否是标准函数：是<br/><br/>函数功能：本函数把指定的tm结构类的日期(分段日期)转换成下列格式的字符串: <br/><br/>Mon Nov 21 11:31:54 1983&#92;n&#92;0 <br/><br/>返回值：转换后的字符串指针。<br/><br/>例程如下： 用asctime函数转换时间格式。<br/><br/>#include <stdio.h> <br/><br/>#include <string.h> <br/><br/>#include <time.h> <br/><br/>int main(void) <br/><br/>&#123; <br/><br/>&nbsp;&nbsp; struct tm t; <br/><br/>&nbsp;&nbsp; char str[80]; <br/><br/>&nbsp;&nbsp; /*设置tm结构类变量t的时间成员 */ <br/><br/>&nbsp;&nbsp; t.tm_sec&nbsp;&nbsp;&nbsp;&nbsp;= 1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* 秒*/ <br/><br/>&nbsp;&nbsp; t.tm_min&nbsp;&nbsp;&nbsp;&nbsp;= 30;&nbsp;&nbsp;&nbsp;&nbsp;/*分钟 */ <br/><br/>&nbsp;&nbsp; t.tm_hour&nbsp;&nbsp; = 9;&nbsp;&nbsp;&nbsp;&nbsp; /* 时 */ <br/><br/>&nbsp;&nbsp; t.tm_mday&nbsp;&nbsp; = 22;&nbsp;&nbsp; /* 日 */ <br/><br/>&nbsp;&nbsp; t.tm_mon&nbsp;&nbsp;&nbsp;&nbsp;= 11;&nbsp;&nbsp; /* 月 */ <br/><br/>&nbsp;&nbsp; t.tm_year&nbsp;&nbsp; = 56;&nbsp;&nbsp;&nbsp;&nbsp;/* 年 */ <br/><br/>&nbsp;&nbsp; t.tm_wday&nbsp;&nbsp; = 4;&nbsp;&nbsp;&nbsp;&nbsp;/*星期*/ <br/><br/>&nbsp;&nbsp; t.tm_yday&nbsp;&nbsp; = 0;&nbsp;&nbsp;&nbsp;&nbsp;/*不必设置*/ <br/><br/>&nbsp;&nbsp; t.tm_isdst&nbsp;&nbsp;= 0;&nbsp;&nbsp;&nbsp;&nbsp; /*不必设置 */ <br/><br/>&nbsp;&nbsp; /*格式转换 */ <br/><br/>&nbsp;&nbsp; strcpy(str, asctime(&t)); <br/><br/>&nbsp;&nbsp; printf("%s&#92;n", str); <br/><br/>&nbsp;&nbsp; return 0; <br/><br/>&#125;<br/><br/>例程说明：<br/><br/>（1）首先定义tm结构类的变量t，并设置t的时间成员。<br/><br/>（2）通过函数asctime将t的时间转换为指定格式。<br/><br/>（3）输出转换后的指定格式的字符串。<br/><br/>本例程的运行结果为：<br/><br/>Thu Dec 22 09:30:01 1956<br/><br/>注意：<br/><br/>函数asctime返回指向转换后的指定格式的字符串指针。本例程通过函数strcpy将指定格式的字符串的指针拷贝给str，并通过“%s”格式符输出该指定格式的字符串。<br/><br/> <br/><br/>clock：测定运行时间函数<br/>函数原型：clock_t clock(void)<br/><br/>头文件：#include<time.h><br/><br/>是否是标准函数：是<br/><br/>函数功能：确定所用的处理器时间。函数clock返回实现环境中从程序运行开始所用的处理器时间的最佳近似值，仅与程序启动有关。clock函数无参数。<br/><br/>返回值：如果成功，返回从程序开始运行经过的时间；否则（系统没有内部时钟）返回-1。<br/><br/>例程如下： 应用clock函数计算程序运行时间<br/><br/>#include <time.h> <br/><br/>#include <stdio.h> <br/><br/>#include <dos.h> <br/><br/>int main(void) <br/><br/>&#123; <br/><br/>&nbsp;&nbsp; clock_t start, end;<br/><br/>&nbsp;&nbsp; /*程序运行到现在的时间*/<br/><br/>&nbsp;&nbsp; start = clock(); <br/><br/>&nbsp;&nbsp; /*间隔1000毫秒*/<br/><br/>&nbsp;&nbsp; delay(1000);<br/><br/>&nbsp;&nbsp; /*程序运行到现在的时间*/<br/><br/>&nbsp;&nbsp; end = clock(); <br/><br/>&nbsp;&nbsp; printf("The time was: %f&#92;n", (end - start) / CLK_TCK); <br/><br/>&nbsp;&nbsp; return 0; <br/><br/>&#125;<br/><br/>例程说明：<br/><br/>（1）首先用clock函数记录下程序运行到目前所用的时间，并将该时间存入clock_t类型的变量start中。<br/><br/>（2）应用delay函数使程序暂停1000毫秒。<br/><br/>（3）再用clock函数记录下程序运行到目前所用的时间，并将该时间存入clock_t类型的变量end中。<br/><br/>（4）计算出时间差（end-start）获得程序暂停delay的时间。再除以常量CLK_TCK，转化为以秒为单位。<br/><br/>本例程的执行结果为：<br/><br/>The time was:0.989011<br/><br/>注意：CLK_TCK是系统常量。<br/><br/> <br/><br/>ctime：时间转换函数<br/>函数原型：char *ctime(const time_t *time)<br/><br/>头文件：#include<time.h><br/><br/>是否是标准函数：是<br/><br/>函数功能：将time所指向的日历时间转换为字符串形式的本地时间。它等价于函数调用asctime(localtime(timer))。字符串的格式为：DDD MMM dd hh:mm:ss YYYY<br/><br/>返回值：转换后的字符串指针。<br/><br/>例程如下： 用 ctime函数转换时间格式。<br/><br/>#include <stdio.h> <br/><br/>#include <time.h> <br/><br/>int main(void) <br/><br/>&#123; <br/><br/>&nbsp;&nbsp; time_t t; <br/><br/>&nbsp;&nbsp; time(&t); <br/><br/>&nbsp;&nbsp; printf("Today's date and time: %s&#92;n", ctime(&t)); <br/><br/>&nbsp;&nbsp; return 0; <br/><br/>&#125;<br/><br/>例程说明：<br/><br/>（1）首先定义time_t类型的变量t。<br/><br/>（2）应用函数time获取系统时间。<br/><br/>（3）通过函数ctime 将获取的日历时间time_t转换为规定格式的字符串表示。<br/><br/>本例程的运行结果为：<br/><br/>Today's date and time: Sat Nov 10 00:57:14 2007<br/><br/>注意：<br/><br/>函数ctime是将日历时间直接转换为规定格式的字符串表示：<br/><br/>DDD MMM dd hh:mm:ss YYYY<br/><br/>其中，“DDD”表示一星期中的某一天，例如“Sat”表示星期六；“MMM”表示月份，例如“Nov”就表示十一月；dd hh:mm:ss为时钟显示；YYYY为年份。<br/><br/> <br/><br/>difftime：计算时间差函数<br/>函数原型：double difftime(time_t time2, time_t time1)<br/><br/>头文件：#include<time.h><br/><br/>是否是标准函数：是<br/><br/>函数功能：计算两个日历时间time1和time2的时间间隔。其中time1为指定的第一个时间，time2为指定的第二个时间。time1要小于或等于time2。<br/><br/>返回值：返回时间差，以秒为单位的double类型。<br/><br/>例程如下： 应用函数difftime计算时间差<br/><br/>#include <time.h> <br/><br/>#include <stdio.h> <br/><br/>#include <dos.h> <br/><br/>#include <conio.h> <br/><br/>int main(void) <br/><br/>&#123; <br/><br/>&nbsp;&nbsp; time_t first, second; <br/><br/>&nbsp;&nbsp; clrscr();<br/><br/>&nbsp;&nbsp; /*获得系统时间 */<br/><br/>&nbsp;&nbsp; first = time(NULL);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/* 等待2秒 */<br/><br/>&nbsp;&nbsp; delay(2000);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/* 再次获得系统时间 */<br/><br/>&nbsp;&nbsp; second = time(NULL);<br/><br/>&nbsp;&nbsp; printf("The Interval is: %f seconds&#92;n",difftime(second,first));<br/><br/>&nbsp;&nbsp; getch(); <br/><br/>&nbsp;&nbsp; return 0; <br/><br/>&#125;<br/><br/>例程说明：<br/><br/>（1）首先通过time函数获得系统时间，并将其存储在time_t类型变量first中。<br/><br/>（2）应用delay函数使程序暂停2000毫秒。<br/><br/>（3）再次通过time函数获得系统时间，并将其存储在time_t类型变量second中。<br/><br/>（4）通过函数difftime获得first和second的时间间隔，并显示在屏幕上。<br/><br/>本例程的执行结果为：<br/><br/>The Interval is: 2.000000&nbsp;&nbsp;seconds<br/><br/><br/><br/>gmtime： 将日历时间转换为GMT<br/>函数原型：struct tm *gmtime(const time_t *timer)<br/><br/>头文件：#include<time.h><br/><br/>是否是标准函数：是<br/><br/>函数功能：把日期和时间转换为格林尼治标准时间(GMT)。<br/><br/>返回值：指向struct tm分段日期结构类型的指针。<br/><br/>例程如下： 将日历时间转换为GMT。<br/><br/>#include <stdio.h> <br/><br/>#include <stdlib.h> <br/><br/>#include <time.h> <br/><br/>int main(void) <br/><br/>&#123; <br/><br/>&nbsp;&nbsp; time_t t; <br/><br/>&nbsp;&nbsp; struct tm *gmt;<br/><br/>&nbsp;&nbsp; t=time(NULL);<br/><br/>&nbsp;&nbsp; gmt=gmtime(&t);<br/><br/>&nbsp;&nbsp; printf("GMT is:%s", asctime(gmt));<br/><br/>&nbsp;&nbsp; return 0; <br/><br/>&#125;<br/><br/>例程说明：<br/><br/>（1）首先利用time函数获取系统时间，它是一个日历时间。<br/><br/>（2）再应用gmtime函数将该日历时间转换为格林尼治标准时间(GMT)。该函数返回一个指向struct tm分段日期结构类型的指针。<br/><br/>（3）最后应用asctime函数将分段日期转换成规定格式的字符串表示。<br/><br/>本例程的运行结果为：<br/><br/>GMT is:Sat Nov 10 06:25:13 2007<br/><br/>localtime：把日期和时间转变为结构<br/>函数原型：struct tm *localtime(const time_t *timer)<br/><br/>头文件：#include<time.h><br/><br/>是否是标准函数：是<br/><br/>函数功能：把timer所指的日历时间转换为以本地时间表示的分段时间。<br/><br/>返回值：指向struct tm分段日期结构类型的指针。<br/><br/>例程如下： 利用函数localtime将日历时间转换为分段时间。<br/><br/>#include <time.h> <br/><br/>#include <stdio.h> <br/><br/>#include <dos.h> <br/><br/>int main(void) <br/><br/>&#123; <br/><br/>&nbsp;&nbsp; time_t timer; <br/><br/>&nbsp;&nbsp; struct tm *tblock; <br/><br/>&nbsp;&nbsp; timer = time(NULL); <br/><br/>&nbsp;&nbsp; tblock = localtime(&timer); <br/><br/>&nbsp;&nbsp; printf("Local time is: %s&#92;n", asctime(tblock));<br/><br/>&nbsp;&nbsp; printf("Today's date and time: %s&#92;n", ctime(&timer)) ;<br/><br/>&nbsp;&nbsp; getchar();<br/><br/>&nbsp;&nbsp; return 0; <br/><br/>&#125;<br/><br/>例程说明：<br/><br/>（1）首先利用time函数获取系统时间，它是一个日历时间。<br/><br/>（2）利用函数localtime将获取的系统时间（它是一个日历时间）转换为分段时间tm。<br/><br/>（3）利用函数asctime将该分段时间转换为规定的字符串格式，并显示。<br/><br/>（4）利用函数ctime直接将日历时间转换为规定的字符串格式，并显示。<br/><br/>本例程的运行结果为：<br/><br/>Local time is: Sat Nov 10 01:47:59 2007<br/><br/>Today's date and time: Sat Nov 10 01:47:59 2007<br/><br/>注意：<br/><br/>前面讲过，函数调用asctime(localtime(&time))等价于函数调用ctime(&time)，其中&time为日历时间数据的指针。因此，本例程中的两种输出方式结果是一样的。<br/><br/>mktime：时间类型转换函数<br/>函数原型：time_t mktime(struct tm*timeptr)<br/><br/>头文件：#include<time.h><br/><br/>是否是标准函数：是<br/><br/>函数功能：将tm类型的结构指针timeptr指向的结构体中的日期与时间转换为time_t类型的日期和时间，并返回。<br/><br/>返回值：time_t类型的日期和时间，如果日历不能被表达，返回-1。<br/><br/>例程如下： 输出指定日期是一周的哪一天。<br/><br/>#include <time.h> <br/><br/>#include <stdio.h> <br/><br/>#include <dos.h> <br/><br/>#include <conio.h> <br/><br/>int main(void) <br/><br/>&#123; <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;char *week_day [8]=&#123;&nbsp;&nbsp;"Sun",<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Mon",<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Tue",<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Wed",<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Fri",<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Sat",<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Unknow",<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;;<br/><br/>&nbsp;&nbsp; struct tm t;<br/><br/>&nbsp;&nbsp; /*指定日期时间*/<br/><br/>t.tm_year=99;<br/><br/>&nbsp;&nbsp; t.tm_mon=1;<br/><br/>&nbsp;&nbsp; t.tm_mday=1;<br/><br/>&nbsp;&nbsp; t.tm_hour=0;<br/><br/>&nbsp;&nbsp; t.tm_min=0;<br/><br/>&nbsp;&nbsp; t.tm_sec=1;<br/><br/>&nbsp;&nbsp; t.tm_isdst=-1;<br/><br/>/*调用函数mktime设置tm_wday成员*/<br/><br/>&nbsp;&nbsp; if(mktime(&t)==-1)<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t.tm_wday=7;<br/><br/>&nbsp;&nbsp; printf("The day is:%s",week_day[t.tm_wday]);<br/><br/>&nbsp;&nbsp; getch(); <br/><br/>&nbsp;&nbsp; return 0; <br/><br/>&#125; <br/><br/>例程说明：<br/><br/>（1）首先定义一个struct tm结构类型的变量t，并指定t 的日期与时间。<br/><br/>（2）通过函数mktime将t中指定的分段时间转化为日历时间。如果日历时间不能被表达，即返回-1，则将t.tm_wday赋值为0。<br/><br/>（3）根据字符串数组week_day的初值，显示t中指定的时间是一周中的哪一天。<br/><br/>注意：<br/><br/>1、struct tm是time.h中定义的结构体，用来指定分段日期与时间。tm结构如下：<br/><br/>struct&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tm&nbsp;&nbsp;&nbsp;&nbsp; &#123;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp;&nbsp;&nbsp; tm_sec;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp;&nbsp;&nbsp; tm_min;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp;&nbsp;&nbsp; tm_hour;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp;&nbsp;&nbsp; tm_mday;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp;&nbsp;&nbsp; tm_mon;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp;&nbsp;&nbsp; tm_year;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp;&nbsp;&nbsp; tm_wday;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp;&nbsp;&nbsp; tm_yday;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp;&nbsp;&nbsp; tm_isdst;<br/><br/>&#125;;<br/><br/>2、调用函数mktime的作用是将tm类型结构指针指定的日期和时间转换为time_t类型的日历时间，该值与函数time返回值的编码方式相同。函数mktime调用成功时，成员tm_wday被设置为适当的值，并返回一个time_t类型的日历时间。因此本例程中，如果mktime(&t)==-1，则表示函数mktime执行不成功，则将t.tm_wday置为7，输出"Unknow"。否则t. tm_wday会被设置为适当的值。<br/><br/> <br/><br/>time：获取系统时间函数<br/>函数原型：time_t time(time_t *tp)<br/><br/>头文件：#include<time.h><br/><br/>是否是标准函数：是<br/><br/>函数功能：获取系统时间。 <br/><br/>返回值：time_t类型的当前日历时间的最佳近似值，如果日历不能被表达，返回-1。<br/><br/>例程如下： 应用函数time获取系统时间。<br/><br/>#include <time.h> <br/><br/>#include <stdio.h> <br/><br/>int main(void) <br/><br/>&#123; <br/><br/>&nbsp;&nbsp; time_t t; <br/><br/>&nbsp;&nbsp; t = time(&t);<br/><br/>&nbsp;&nbsp; printf("The number of seconds since January 1, 1970 is %ld",t); <br/><br/>&nbsp;&nbsp; return 0; <br/><br/>&#125;<br/><br/>例程说明：<br/><br/>（1）首先定义time_t类型的变量t。<br/><br/>（2）通过函数time获取从GMT1970年1月1日00:00:00开始经过的秒数。<br/><br/>（3）输出该秒数。<br/><br/>本例程的运行结果为：<br/><br/>The number of seconds since January 1, 1970 is 1047682192<br/><br/><br/><br/>
]]>
</description>
</item><item>
<link>https://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] 时间和日期函数]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>https://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>