把日期字符串中的年月日提取出来

// pase_date_string.cpp : Defines the entry point for the console application.
//版权所有:吴建凰

#include "stdafx.h"
#include

int monthday[12]={31,29,31,30,31,30,31,31,30,31,30,31};

bool parse_date_string(const char * date_string,int * year,int * month,int * day){
 int len=0;
 const char *str=date_string;
 while(str[len])//计算日期字符串的长度
  len++;
 if(len<8 || len>10)
  return false;
 int date[3]={0};//存放格式为 月日年
 len=0;
 int i=0;
 int temp=0;//临时变量,用于保存提取出来的数
 bool err=false;
 while(str[len]&& i<3 ){//把字符中的年月日提取出来
  err=true;//先假设有错误
  if(str[len]<='9' && str[len]>='0' ){//如果当前字符不是数字
   temp=temp*10+str[len]-'0';//把字符数组转换成数字
   err=false;//标记为没有错误
  }
  if(str[len]=='-' || str[len]=='/' || str[len+1]=='/0'){//把对应的数字提取出来了
   if(temp>1000 && date[2]==0){//如果提起的是年
    date[2]=temp;
   }
   else{
    date[i++]=temp;
   }
   temp=0;//临时变量归位为0
  }
  else if(err){//假设没有被清除,即出现错误了
   return false;
  }
  len++;
 }
 //计算二月的日期
 if(date[2]&3 ){//date[2]&3 = date[2]%4
    monthday[1]=28;

}
 else{//为闰年
   monthday[1]=29;
 }
 //判断提取的年月日是否出错
 if(date[0]>12 || date[1]>monthday[date[0]] || date[2]<1000 ){
  return false;
 }
 *year=date[2];
 *month=date[0];
 *day=date[1];
 return true;//返回成功标志
}

int main(int argc, char* argv[])
{
 int i=0;
 int year;
 int month;
 int day;
 if(parse_date_string("2009-9-8",&year,&month,&day)){
  cout< }
 else
  cout<<"日期格式错误"< return 0;
}

你可能感兴趣的:(vc++,文章)