分享
 
 
 

如何用date获得前一天的日期

王朝other·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

int date8_add(char *date8,char ymd,int value,char *date8added);

int checkdate8(char *date8);

long int days_from_8zeros(char *date8);

int get_data8_from_days(long int days,char *date8);

//功能:计算某年月日前后一定年数(或月数、天数)的年月日

//输入:

// 1. date8 计算基准日期

// 2. ymd 表示下一变量的单位 'y'-年 'm'-月 'd'-日

// 3. value 偏移量:年数、月数、天数

//输出:

// 1. date8added 计算后结果

//返回:

// 0 成功

// -1 date8非法

// -2 ymd非法

// -3 value非法

// -4 转换后date8added的年份小于公元1年

// -5 转换后date8added的年份大于公元9999年

// -6 转换后date8added非法,例如得到结果为2002/02/30

int date8_add(char *date8,char ymd,int value,char *date8added)

{

char strtmp[10];

long int days;

int c,vyear,vmonth,vday;

int errbz;

// 检查参数date8的合法性

errbz=checkdate8(date8);

if (errbz!=0) return(-1);

// 检查参数ymd的合法性

if ( ymd!='y' && ymd!='m' && ymd!='d') return(-2);

// 检查参数value的合法性(简单检查)

//if ( value < -9999 || value > 9999 ) return(-3);

// 当增加量为年数时,计算结果并返回

if (ymd=='y')

{

memset(strtmp,0,sizeof(strtmp));

memcpy(strtmp,date8+0,4);

sscanf(strtmp,"%d",&vyear);

vyear+=value;

if ( vyear<1 ) return(-4); //小于公元1年

if ( vyear>9999 ) return(-5); //大于公元9999年

strcpy(date8added,date8);

sprintf(strtmp,"%04d",vyear);

memcpy(date8added,strtmp,4);

errbz=checkdate8(date8added);

if (errbz!=0) return(-6); //计算所得结果非法

return(0);

}

// 当增加量为月数时,计算结果并返回

if (ymd=='m')

{

vyear=0;

vmonth=0;

vday=0;

memset(strtmp,0,sizeof(strtmp)); memcpy(strtmp,date8+0,4); sscanf(strtmp,"%d",&vyear);

memset(strtmp,0,sizeof(strtmp)); memcpy(strtmp,date8+4,2); sscanf(strtmp,"%d",&vmonth);

memset(strtmp,0,sizeof(strtmp)); memcpy(strtmp,date8+6,2); sscanf(strtmp,"%d",&vday);

vmonth=vyear*12+vmonth+value;

vmonth--;

vyear=vmonth/12;

vmonth=vmonth%12;

vmonth++;

if (vyear<1) return(-4);

if (vyear>9999) return(-5);

sprintf(date8added,"%04d%02d%02d",vyear,vmonth,vday);

errbz=checkdate8(date8added);

if (errbz!=0) return(-6);

return(0);

}

// 当增加量为天数时,计算结果并返回

if (ymd=='d')

{

days=days_from_8zeros(date8);

days+=value;

if (days<=366) return(-4); //年号为0000

if (days>3652425) return(-5); //年号超出9999

errbz=get_data8_from_days(days,date8added);

if (errbz!=0) return(-1);

return(0);

}

}

//检查日期YyyyMmdd

//输入:date8 日期字符串

//返回:0-正确 -1-错误

int checkdate8(char *date8)

{

int c;

int errdate=0;

char str_year[5]="";

char str_mon[3]="";

char str_day[3]="";

int int_year,int_mon,int_day;

int leap_year; // 1-闰年 0-不是闰年

errdate=0;

if ( strlen(date8) != 8 ) errdate=1;

if (errdate!=1)

{

for (c=0;c<10;c++)

{

if (date8[c]==' ') errdate=1;

}

if ( date8[0] < '0' || date8[0] > '9' ) errdate=1;

if ( date8[1] < '0' || date8[1] > '9' ) errdate=1;

if ( date8[2] < '0' || date8[2] > '9' ) errdate=1;

if ( date8[3] < '0' || date8[3] > '9' ) errdate=1;

if ( date8[4] < '0' || date8[4] > '9' ) errdate=1;

if ( date8[5] < '0' || date8[5] > '9' ) errdate=1;

if ( date8[6] < '0' || date8[6] > '9' ) errdate=1;

if ( date8[7] < '0' || date8[7] > '9' ) errdate=1;

}

if (errdate!=1)

{

str_year[0]=date8[0]; str_year[1]=date8[1];

str_year[2]=date8[2]; str_year[3]=date8[3];

str_year[4]='

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有