<timeh>
clock_t
start,end;
在开始计时的地方写:start
=
clock();
在结束的地方写:end
=
clock();
时间等于:t=(end
-
start)/CLOCKS_PER_SEC;
单位是秒月数不好定,因为每个月天数不一样。算到天就行了。
代码如下:
版本
2
支持库
spec
子程序
_按钮1_被单击
局部变量
运行时间,
整数型,
,
,
毫秒
运行时间
=
取启动时间
()
调试输出
(取毫秒到天
(运行时间))
子程序
取毫秒到天,
文本型
参数
参_秒,
整数型
局部变量
参_秒,
整数型
局部变量
天,
整数型
局部变量
小时,
整数型
局部变量
分钟,
整数型
局部变量
秒,
整数型
参_秒
=
取启动时间
()
÷
1000
天
=
参_秒
÷
60
÷
60
÷
24
小时
=
(参_秒
-
天
×
24
×
3600)
÷
3600
分钟
=
(参_秒
-
天
×
24
×
3600
-
小时
×
3600)
÷
60
秒
=
参_秒
%
60
返回
(到文本
(天)
+
“天”
+
到文本
(小时)
+
“小时”
+
到文本
(分钟)
+
“分钟”
+
到文本
(秒)
+
“秒”)CE源码中加入时间的方法有很多,可以使用C语言的time()函数来获取当前的时间,也可以使用GetSystemTime()函数来获取系统时间,还可以使用GetLocalTime()函数来获取本地时间,具体的实现方法可以参考相关资料。版本 2
程序集 窗口程序集1
子程序 _按钮1_被单击
时钟1时钟周期 = 1000
信息框 (“设置神通闹钟”, 0, )
子程序 _时钟1_周期事件
局部变量 小时, 整数型
局部变量 分钟, 整数型
局部变量 神通, 整数型
局部变量 逍通, 整数型
小时 = 到整数 (取小时 (取现行时间 ()))
分钟 = 到整数 (取分钟 (取现行时间 ()))
神通 = 到整数 (取文本左边 (编辑框1内容, 寻找文本 (编辑框1内容, “:”, , 假)))
逍通 = 到整数 (取文本右边 (编辑框1内容, 取文本长度 (编辑框1内容) - 寻找文本 (编辑框1内容, “:”, , 假)))
如果真 (小时 = 神通 且 分钟 = 逍通)
时钟1时钟周期 = 0
时钟2时钟周期 = 1000
信息框 (“时间到了”, 64, “神通闹钟”)
如果真结束
子程序 _时钟2_周期事件
鸣叫 ()用到的数据结构:
time_t是一个long类型 代表机器时间,可由time( )函数获得。
日历时间用一个(char ) 类型的字符串表示。格式为:星期 月 日 小时:分:秒 年\n\0
可由函数ctime( ) asctime( ) 得到。
以tm结构表达的时间,结构tm定义如下:
struct tm { 可由函数localtime( ), gmtime( )得到
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year;
int tm_wday;
int tm_yday;
int tm_isdst; };
//系统日期
struct date {
int da_year; / Year - 1980 /
char da_day; / Day of the month /
char da_mon; / Month (1 = Jan) / };
//系统时间
struct time {
unsigned char ti_min; / Minutes /
unsigned char ti_hour; / Hours /
unsigned char ti_hund; / Hundredths of seconds /
unsigned char ti_sec; / Seconds / };
用到的函数:
char asctime(struct tm ptr) 将tm结构的时间转化为日历时间。
char ctime(long time) 将机器时间转化为日历时间。
struct tm gmtime(time_t time) 将机器时间转化为tm时间
当ptr为空时,得到机器时间;非空时,设置机器时间。
time_t time(time_t ptr) 得到或设置机器时间
double difftime(time_t time2, time_t time1) 得到两次机器时间差,单位为秒
long dostounix(struct data d, struct time t) 将DOS的日期和时间格式转换成UNIX标准
(机器时间(用到dosh库)void unixtodos(long utime, struct date d, struct time t)
将UNIX格式的时间和日期转换成DOS格式(由time 和date两部分组成,只能由机器时间得到,并且用到dosh库)
void getdate(struct date d) 得到系统日期,d 存放得到的日期信息
void setdate(struct date d)
void gettime(struct date t) 得到系统时间 d 存放得到的时间信息
void settime(struct date t)
C语言的标准库函数包括一系列日期和时间处理函数,它们都在头文件中说明。下面列出了这些函数。
在头文件中定义了三种类型:time_t,struct tm和clock_t。
在中说明的C语言时间函数
time_t time(time_t timer);
double difftime(time_t time1,time_t time2);
struct tm gmtime(const time_t timer);
struct tm localtime(const time_t timer);
char asctime(const struct tm timeptr);
char ctime(const time_t timer);
size_t strftime(char s,size_t maxsize,const char format,const struct tm timeptr);
time_t mktime(struct tm timeptr);
clock_t clock(void);
下面是我从网上收集到的时间函数集
asctime(将时间和日期以字符串格式表示)
相关函数
time,ctime,gmtime,localtime
表头文件
#i nclude
定义函数
char asctime(const struct tm timeptr);
函数说明
asctime()将参数timeptr所指的tm结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回。
此函数已经由时区转换成当地时间,字符串格式为:"Wed Jun 30 21:49:08 1993\n"
返回值
若再调用相关的时间日期函数,此字符串可能会被破坏。此函数与ctime不同处在于传入的参数是不同的结构。
附加说明
返回一字符串表示目前当地的时间日期。
范例
#i nclude
main()
{
time_t timep;
time (&timep);
printf("%s",asctime(gmtime(&timep)));
}
执行
Sat Oct 28 02:10:06 2000
ctime(将时间和日期以字符串格式表示)
相关函数
time,asctime,gmtime,localtime
表头文件
#i nclude
定义函数
char ctime(const time_t timep);
函数说明
ctime ()将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回。
此函数已经由时区转换成当地时间,字符串格式为"Wed Jun 30 21 :49 :08 1993\n"。若再调用相关的时间日期函数,此字符串可能会被破坏。
返回值
返回一字符串表示目前当地的时间日期。
范例
#i nclude
main()
{
time_t timep;
time (&timep);
printf("%s",ctime(&timep));
}
执行
Sat Oct 28 10 : 12 : 05 2000
gettimeofday(取得目前的时间)
相关函数
time,ctime,ftime,settimeofday
表头文件
#i nclude
#i nclude
定义函数
int gettimeofday ( struct timeval tv , struct timezone tz )
函数说明
gettimeofday()会把目前的时间有tv所指的结构返回,当地时区的信息则放到tz所指的结构中。
timeval结构定义为:
struct timeval{
long tv_sec; /秒/
long tv_usec; /微秒/
};
timezone 结构定义为:
struct timezone{
int tz_minuteswest; /和Greenwich 时间差了多少分钟/
int tz_dsttime; /日光节约时间的状态/
};
上述两个结构都定义在/usr/include/sys/timeh。tz_dsttime 所代表的状态如下
DST_NONE /不使用/
DST_USA /美国/
DST_AUST /澳洲/
DST_WET /西欧/
DST_MET /中欧/
DST_EET /东欧/
DST_CAN /加拿大/
DST_GB /大不列颠/
DST_RUM /罗马尼亚/
DST_TUR /土耳其/
DST_AUSTALT /澳洲(1986年以后)/
返回值
成功则返回0,失败返回-1,错误代码存于errno。附加说明EFAULT指针tv和tz所指的内存空间超出存取权限。
范例
#i nclude
#i nclude
main(){
struct timeval tv;
struct timezone tz;
gettimeofday (&tv , &tz);
printf("tv_sec; %d\n", tv,tv_sec) ;
printf("tv_usec; %d\n",tvtv_usec);
printf("tz_minuteswest; %d\n", tztz_minuteswest);
printf("tz_dsttime, %d\n",tztz_dsttime);
}
执行
tv_sec: 974857339
tv_usec:136996
tz_minuteswest:-540
tz_dsttime:0
gmtime(取得目前时间和日期)
相关函数
time,asctime,ctime,localtime
表头文件
#i nclude
定义函数
struct tmgmtime(const time_ttimep);
函数说明
gmtime()将参数timep 所指的time_t 结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果由结构tm返回。
结构tm的定义为
struct tm
{
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year;
int tm_wday;
int tm_yday;
int tm_isdst;
};
int tm_sec 代表目前秒数,正常范围为0-59,但允许至61秒
int tm_min 代表目前分数,范围0-59
int tm_hour 从午夜算起的时数,范围为0-23
int tm_mday 目前月份的日数,范围01-31
int tm_mon 代表目前月份,从一月算起,范围从0-11
int tm_year 从1900 年算起至今的年数
int tm_wday 一星期的日数,从星期一算起,范围为0-6
int tm_yday 从今年1月1日算起至今的天数,范围为0-365
int tm_isdst 日光节约时间的旗标
此函数返回的时间日期未经时区转换,而是UTC时间。
返回值
返回结构tm代表目前UTC 时间
范例
#i nclude
main(){
char wday[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
time_t timep;
struct tm p;
time(&timep);
p=gmtime(&timep);
printf("%d%d%d",(1900+p->tm_year), (1+p->tm_mon),p->tm_mday);
printf("%s%d;%d;%d\n", wday[p->tm_wday], p->tm_hour, p->tm_min, p->tm_sec);
}
执行
2000/10/28 Sat 8:15:38
localtime(取得当地目前时间和日期)
相关函数
time, asctime, ctime, gmtime
表头文件
#i nclude
定义函数
struct tm localtime(const time_t timep);
函数说明
localtime()将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果由结构tm返回。
结构tm的定义请参考gmtime()。此函
数返回的时间日期已经转换成当地时区。
返回值
返回结构tm代表目前的当地时间。
范例
#i nclude
main(){
char wday[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
time_t timep;
struct tm p;
time(&timep);
p=localtime(&timep); /取得当地时间/
printf ("%d%d%d ", (1900+p->tm_year),( l+p->tm_mon), p->tm_mday);
printf("%s%d:%d:%d\n", wday[p->tm_wday],p->tm_hour, p->tm_min, p->tm_sec);
}
执行
2000/10/28 Sat 11:12:22
mktime(将时间结构数据转换成经过的秒数)
相关函数
time,asctime,gmtime,localtime
表头文件
#i nclude
定义函数
time_t mktime(strcut tm timeptr);
函数说明
mktime()用来将参数timeptr所指的tm结构数据转换成从公元1970年1月1日0时0分0 秒算起至今的UTC时间所经过的秒数。
返回值
返回经过的秒数。
范例
/ 用time()取得时间(秒数),利用localtime()
转换成struct tm 再利用mktine()将struct tm转换成原来的秒数/
#i nclude
main()
{
time_t timep;
strcut tm p;
time(&timep);
printf("time() : %d \n",timep);
p=localtime(&timep);
timep = mktime(p);
printf("time()->localtime()->mktime():%d\n",timep);
}
执行
time():974943297
time()->localtime()->mktime():974943297
settimeofday(设置目前时间)
相关函数
time,ctime,ftime,gettimeofday
表头文件
#i nclude
#i nclude
定义函数
int settimeofday ( const struct timeval tv,const struct timezone tz);
函数说明
settimeofday()会把目前时间设成由tv所指的结构信息,当地时区信息则设成tz所指的结构。详细的说明请参考gettimeofday()。
注意,只有root权限才能使用此函数修改时间。
返回值
成功则返回0,失败返回-1,错误代码存于errno。
错误代码
EPERM 并非由root权限调用settimeofday(),权限不够。
EINVAL 时区或某个数据是不正确的,无法正确设置时间。
time(取得目前的时间)
相关函数
ctime,ftime,gettimeofday
表头文件
#i nclude
定义函数
time_t time(time_t t);
函数说明
此函数会返回从公元1970年1月1日的UTC时间从0时0分0秒算起到现在所经过的秒数。如果t 并非空指针的话,
此函数也会将返回值存到t指针所指的内存。
返回值
成功则返回秒数,失败则返回((time_t)-1)值,错误原因存于erro中。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)