积累系统性知识
积聚技术精华
  首页    个人中心    撰写积文    建立课题    订立目标    整理积文    管理课题    管理目标    技能Get    代码积累 
显示完整代码
函数名: GetTimeLong代码语言: C/C++何种处理: 字符串
代码使用场合: 把字符串转换成time_t
代码使用前提条件(所依赖的类库,操作系统环境,软件支撑环境等):
UNIX时间time_t
自用TAG: string,time_t
   
static void skip_to_next_number(const char *&str)
{
  if(*str==0)
  {
    return;
  }
  for(;*str;str++)
  {
    if(*str<'0' || *str>'9')
    {
      break;
    }
  }

  if(*str==0)
  {
    return;
  }

  for(;*str;str++)
  {
    if(*str>='0' && *str<='9')
    {
      return;
    }
  }
}

time_t GetTimeLong(const char *time_str)
{
  const char *str=time_str;

  int year=atol(str);
  if(year==0)
  {
    return 0;
  }

  skip_to_next_number(str);

  int month=atol(str);
  if(month==0)
  {
    return 0;
  }

  skip_to_next_number(str);

  int day=atol(str);
  if(day==0)
  {
    return 0;
  }

  skip_to_next_number(str);

  int hour=0,minute=0,second=0;
  if(*str)
  {
    hour=atol(str);

    skip_to_next_number(str);
    if(*str)
    {
      minute=atol(str);

      skip_to_next_number(str);
      if(*str)
      {
        second=atol(str);
      }
    }
  }

  struct tm time_dat;
  memset(&time_dat,0,sizeof(struct tm));
  time_dat.tm_year=year-1900;
  time_dat.tm_mon=month-1;
  time_dat.tm_mday=day;
  time_dat.tm_hour=hour;
  time_dat.tm_min=minute;
  time_dat.tm_sec=second;

  time_t the_time=mktime(&time_dat);

  return the_time;
}
  code_ever(永远的代码):   个人中心    课题    目标    代码积累