科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件UNIX环境下的日期程序(求时间的函数)

UNIX环境下的日期程序(求时间的函数)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

前段时间做了一个计费程序,其中涉及到有关日期与时间的计算,如求某日某时的前(或后)一段时间是什么时候,UNIX C系统本身并未提供此类函数,笔者经摸索,设计了一个求时间的函数,现介绍给大家。

来源:中国软件网 2008年3月31日

关键字: 函数 unix C++ C Linux

  • 评论
  • 分享微博
  • 分享邮件

前段时间做了一个计费程序,其中涉及到有关日期与时间的计算,如求某日某时的前(或后)一段时间是什么时候,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,chard_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 /

该函数不仅可求出某个时间前(后)一段时长的日期与时间,而且可得出这个日期是星期几,给程序设计带来不少便利,也方便了费用的计算与核实,读者可直接调用该函数。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章