前段时间做了一个计费程序,其中涉及到有关日期与时间的计算,如求某日某时的前(或后)一段时间是什么时候,UNIX C系统本身并未提供此类函数,笔者经摸索,设计了一个求时间的函数,现介绍给大家。
功能介绍与参数说明
该函数的主要功能是根据给定的日期时间及时长求出此前或后(bill_long为负)的日期时间及其星期。
参数说明如下:
s:为给定的日期时间,如2001年6月2日18点30分04秒为“20010602183004”;
bill_long:给定的时间长度,单位为秒;
d_str:求出的日期,如2001年6月2日为“20010602”;
t_str:求出的时间,如18点28分06秒为“182806”;
函数返回值为星期,如星期日为0,星期一至六分别对应1~6。
实现代码
该函数的具体实现代码如下:
int GetDateTime( char s,long int bill_long,chard_str, char t_str) {
time_t timer,tim ;
struct tm tb, tb1 ;
int year_off = 1900 ;
int mon_off = 1 ;
char s1[20] ;
if ( strlen( s )!=14 )
return -1;
strncpy( s1, s, 4 );
s1[4] = '\0' ;
tb.tm_year = atoi( s1 );
strncpy( s1, s+4, 2 );
s1[2] = '\0' ;
tb.tm_mon = atoi( s1 );
strncpy( s1, s+6, 2 );
s1[2] = '\0' ;
tb.tm_mday = atoi( s1 );
if ( tb.tm_year==0 || tb.tm_mon==0 ||tb.tm_mday==0 )
return -1;
strncpy( s1, s+8, 2 );
s1[2] = '\0' ;
tb.tm_hour = atoi( s1 );
strncpy( s1, s+10, 2 );
s1[2] = '\0' ;
tb.tm_min = atoi( s1 );
strncpy( s1, s+12, 2 );
s1[2] = '\0' ;
tb.tm_sec = atoi( s1 );
tb.tm_year -= year_off ;
tb.tm_mon -= mon_off ;
tb.tm_isdst = 0 ;
tim=mktime( &tb ) ;
tim=tim-bill_long;
tb1=localtime(&tim);
sprintf(d_str, "%#04d%#02d%#02d",1900+tb1->tm_year,tb1->tm_mon+1,tb1->tm_mday);
sprintf(t_str, "%#02d%#02d%#02d",tb1->tm_hour, tb1->tm_min,tb1->tm_sec);
return (tb1->tm_wday);
} / end of GetDateTime /
该函数不仅可求出某个时间前(后)一段时长的日期与时间,而且可得出这个日期是星期几,给程序设计带来不少便利,也方便了费用的计算与核实,读者可直接调用该函数。
相关视频
相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么
热门文章
Wordpress本地安装教程
dx1.5如何设置二级域名
最新文章
hbuilder有哪些快捷键
Wordpress本地安装教程
Wordpress本地安装教程expression web 4文档乱码解决方法dz 2.5“收藏本版”关闭小对话框无法关闭解在制作安装软件之前,您必须先将易语言存盘,
人气排行 如何使用multipart/form-data格式上传文件Photoshop PS图层混合模式详解(非常详细)ISAPI_Rewrite3使用教程网站里添加收藏和设为首页代码桌面快捷方式图标不见了C#获取执行程序所在的当前路径的方法详解(XMLHttpRequest)进行跨域请求方法如何用远程桌面连接进行传输文件
查看所有0条评论>>