![](/media/cache/profiles/Pass2.jpg.50x50_q85.jpg)
KL25Z program that calculates the difference in days, hours, minutes, between two dates. Needs a terminal on the PC side to communicate with the program. Terminal must have local echo on. Terminal Data input needs some improvement.
main.cpp@0:dce171f603a8, 2015-05-13 (annotated)
- Committer:
- lmsousa
- Date:
- Wed May 13 12:01:41 2015 +0000
- Revision:
- 0:dce171f603a8
- Child:
- 1:0756a87e335f
Initial Version
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
lmsousa | 0:dce171f603a8 | 1 | /* |
lmsousa | 0:dce171f603a8 | 2 | Programa que calcula a diferença entre duas datas. |
lmsousa | 0:dce171f603a8 | 3 | LESEM ENAUTICA 2014 Luis Sousa aluno 11001 |
lmsousa | 0:dce171f603a8 | 4 | */ |
lmsousa | 0:dce171f603a8 | 5 | |
lmsousa | 0:dce171f603a8 | 6 | #include <stdio.h> |
lmsousa | 0:dce171f603a8 | 7 | //#include <conio.h> |
lmsousa | 0:dce171f603a8 | 8 | |
lmsousa | 0:dce171f603a8 | 9 | int bissexto(int ano); |
lmsousa | 0:dce171f603a8 | 10 | int dias_do_mes(int ano,int mes); |
lmsousa | 0:dce171f603a8 | 11 | int dias_do_ano(int ano); |
lmsousa | 0:dce171f603a8 | 12 | int dias_ate_fim_mes(int ano,int mes,int dia); |
lmsousa | 0:dce171f603a8 | 13 | int dias_dos_meses_intermedios(int ano,int mes1,int mes2); |
lmsousa | 0:dce171f603a8 | 14 | int dias_dos_anos_intermedios(int ano1, int ano2); |
lmsousa | 0:dce171f603a8 | 15 | int dias_ate_fim_ano(int ano,int mes,int dia); |
lmsousa | 0:dce171f603a8 | 16 | int dias_desde_principio_ano(int ano,int mes,int dia); |
lmsousa | 0:dce171f603a8 | 17 | long int dif_data(int ano1,int mes1,int dia1,int ano2,int mes2,int dia2); |
lmsousa | 0:dce171f603a8 | 18 | |
lmsousa | 0:dce171f603a8 | 19 | int main(void) |
lmsousa | 0:dce171f603a8 | 20 | { |
lmsousa | 0:dce171f603a8 | 21 | int limite_ano_min=0,limite_ano_max=2100;//Valores limite para o ano// |
lmsousa | 0:dce171f603a8 | 22 | int ano_dt1,ano_dt2,mes_dt1,mes_dt2,dia_dt1,dia_dt2; |
lmsousa | 0:dce171f603a8 | 23 | long int score_dt1,score_dt2; //Variaveis que avaliam a data mais alta// |
lmsousa | 0:dce171f603a8 | 24 | int hora_dt1,hora_dt2,horas,min_dt1,min_dt2,tmins1,tmins2,minutos,tmp_ano,tmp_mes,tmp_dia,tmp_hora,tmp_min; |
lmsousa | 0:dce171f603a8 | 25 | |
lmsousa | 0:dce171f603a8 | 26 | //clrscr(); |
lmsousa | 0:dce171f603a8 | 27 | printf("Programa que calcula a diferenca entre duas datas. "); |
lmsousa | 0:dce171f603a8 | 28 | printf("\nLESEM ENAUTICA 2014 Luis Sousa aluno 11001"); |
lmsousa | 0:dce171f603a8 | 29 | printf("\n\nIntroducao da Data 1"); |
lmsousa | 0:dce171f603a8 | 30 | do |
lmsousa | 0:dce171f603a8 | 31 | { |
lmsousa | 0:dce171f603a8 | 32 | printf("\nIntroduza o ano da Data 1: (%d-%d): ",limite_ano_min,limite_ano_max); |
lmsousa | 0:dce171f603a8 | 33 | scanf("%d",&ano_dt1); |
lmsousa | 0:dce171f603a8 | 34 | if (!((ano_dt1>=limite_ano_min)&&(ano_dt1<=limite_ano_max))) |
lmsousa | 0:dce171f603a8 | 35 | printf("O ano tem de estar compreendido entre %d e %d ",limite_ano_min,limite_ano_max); |
lmsousa | 0:dce171f603a8 | 36 | } |
lmsousa | 0:dce171f603a8 | 37 | while(!((ano_dt1>=limite_ano_min)&&(ano_dt1<=limite_ano_max))); |
lmsousa | 0:dce171f603a8 | 38 | |
lmsousa | 0:dce171f603a8 | 39 | do |
lmsousa | 0:dce171f603a8 | 40 | { |
lmsousa | 0:dce171f603a8 | 41 | printf("Introduza o mes da Data 1: (%d-%d): ",1,12); |
lmsousa | 0:dce171f603a8 | 42 | scanf("%d",&mes_dt1); |
lmsousa | 0:dce171f603a8 | 43 | if (!((mes_dt1>=1)&&(mes_dt1<=12))) |
lmsousa | 0:dce171f603a8 | 44 | printf("O mes tem de estar compreendido entre %d e %d \n",1,12); |
lmsousa | 0:dce171f603a8 | 45 | |
lmsousa | 0:dce171f603a8 | 46 | } |
lmsousa | 0:dce171f603a8 | 47 | while(!((mes_dt1>=1)&&(mes_dt1<=12))); |
lmsousa | 0:dce171f603a8 | 48 | |
lmsousa | 0:dce171f603a8 | 49 | do |
lmsousa | 0:dce171f603a8 | 50 | { |
lmsousa | 0:dce171f603a8 | 51 | printf("Introduza o dia da Data 1: (%d-%d): ",1,dias_do_mes(ano_dt1,mes_dt1)); |
lmsousa | 0:dce171f603a8 | 52 | scanf("%d",&dia_dt1); |
lmsousa | 0:dce171f603a8 | 53 | if (!((dia_dt1>=1) && (dia_dt1 <= dias_do_mes(ano_dt1,mes_dt1)))) |
lmsousa | 0:dce171f603a8 | 54 | printf("O dia tem de estar compreendido entre %d e %d \n",1,dias_do_mes(ano_dt1,mes_dt1)); |
lmsousa | 0:dce171f603a8 | 55 | } |
lmsousa | 0:dce171f603a8 | 56 | while(!((dia_dt1>=1) && (dia_dt1 <= dias_do_mes(ano_dt1,mes_dt1)))); |
lmsousa | 0:dce171f603a8 | 57 | |
lmsousa | 0:dce171f603a8 | 58 | do |
lmsousa | 0:dce171f603a8 | 59 | { |
lmsousa | 0:dce171f603a8 | 60 | printf("Introduza a hora da Data 1: (%d-%d): ",0,23); |
lmsousa | 0:dce171f603a8 | 61 | scanf("%d",&hora_dt1); |
lmsousa | 0:dce171f603a8 | 62 | if (!((hora_dt1>=0) && (hora_dt1 <= 23))) |
lmsousa | 0:dce171f603a8 | 63 | printf("A hora tem de estar compreendida entre %d e %d \n",0,23); |
lmsousa | 0:dce171f603a8 | 64 | } |
lmsousa | 0:dce171f603a8 | 65 | while(!((hora_dt1>=0) && (hora_dt1 <= 23))); |
lmsousa | 0:dce171f603a8 | 66 | |
lmsousa | 0:dce171f603a8 | 67 | do |
lmsousa | 0:dce171f603a8 | 68 | { |
lmsousa | 0:dce171f603a8 | 69 | printf("Introduza os minutos da Data 1: (%d-%d): ",0,59); |
lmsousa | 0:dce171f603a8 | 70 | scanf("%d",&min_dt1); |
lmsousa | 0:dce171f603a8 | 71 | if (!((min_dt1>=0) && (min_dt1 <= 59))) |
lmsousa | 0:dce171f603a8 | 72 | printf("Os minutos devem estar compreendidos entre %d e %d \n",0,59); |
lmsousa | 0:dce171f603a8 | 73 | } |
lmsousa | 0:dce171f603a8 | 74 | while(!((min_dt1>=0) && (min_dt1 <= 59))); |
lmsousa | 0:dce171f603a8 | 75 | |
lmsousa | 0:dce171f603a8 | 76 | |
lmsousa | 0:dce171f603a8 | 77 | printf("\n\nIntroducao da Data 2"); |
lmsousa | 0:dce171f603a8 | 78 | do |
lmsousa | 0:dce171f603a8 | 79 | { |
lmsousa | 0:dce171f603a8 | 80 | printf("\nIntroduza o ano da Data 2: (%d-%d): ",limite_ano_min,limite_ano_max); |
lmsousa | 0:dce171f603a8 | 81 | scanf("%d",&ano_dt2); |
lmsousa | 0:dce171f603a8 | 82 | if (!((ano_dt2>=limite_ano_min)&&(ano_dt2<=limite_ano_max))) |
lmsousa | 0:dce171f603a8 | 83 | printf("O ano tem de estar compreendido entre %d e %d ",limite_ano_min,limite_ano_max); |
lmsousa | 0:dce171f603a8 | 84 | |
lmsousa | 0:dce171f603a8 | 85 | } |
lmsousa | 0:dce171f603a8 | 86 | while(!((ano_dt2>=limite_ano_min)&&(ano_dt2<=limite_ano_max))); |
lmsousa | 0:dce171f603a8 | 87 | |
lmsousa | 0:dce171f603a8 | 88 | do |
lmsousa | 0:dce171f603a8 | 89 | { |
lmsousa | 0:dce171f603a8 | 90 | printf("Introduza o mes da Data 2: (%d-%d): ",1,12); |
lmsousa | 0:dce171f603a8 | 91 | scanf("%d",&mes_dt2); |
lmsousa | 0:dce171f603a8 | 92 | if (!((mes_dt2>=1)&&(mes_dt2<=12))) |
lmsousa | 0:dce171f603a8 | 93 | printf("O mes tem de estar compreendido entre %d e %d \n",1,12); |
lmsousa | 0:dce171f603a8 | 94 | } |
lmsousa | 0:dce171f603a8 | 95 | while(!((mes_dt2>=1)&&(mes_dt2<=12))); |
lmsousa | 0:dce171f603a8 | 96 | |
lmsousa | 0:dce171f603a8 | 97 | do |
lmsousa | 0:dce171f603a8 | 98 | { |
lmsousa | 0:dce171f603a8 | 99 | printf("Introduza o dia da Data 2: (%d-%d): ",1,dias_do_mes(ano_dt2,mes_dt2)); |
lmsousa | 0:dce171f603a8 | 100 | scanf("%d",&dia_dt2); |
lmsousa | 0:dce171f603a8 | 101 | if (!((dia_dt2>=1) && (dia_dt2 <= dias_do_mes(ano_dt2,mes_dt2)))) |
lmsousa | 0:dce171f603a8 | 102 | printf("O dia tem de estar compreendido entre %d e %d \n",1,dias_do_mes(ano_dt2,mes_dt2)); |
lmsousa | 0:dce171f603a8 | 103 | } |
lmsousa | 0:dce171f603a8 | 104 | while(!((dia_dt2>=1) && (dia_dt2 <= dias_do_mes(ano_dt2,mes_dt2)))); |
lmsousa | 0:dce171f603a8 | 105 | |
lmsousa | 0:dce171f603a8 | 106 | do |
lmsousa | 0:dce171f603a8 | 107 | { |
lmsousa | 0:dce171f603a8 | 108 | printf("Introduza a hora da Data 2: (%d-%d): ",0,23); |
lmsousa | 0:dce171f603a8 | 109 | scanf("%d",&hora_dt2); |
lmsousa | 0:dce171f603a8 | 110 | if (!((hora_dt2>=0) && (hora_dt2 <= 23))) |
lmsousa | 0:dce171f603a8 | 111 | printf("A hora tem de estar compreendida entre %d e %d \n",0,23); |
lmsousa | 0:dce171f603a8 | 112 | } |
lmsousa | 0:dce171f603a8 | 113 | while(!((hora_dt2>=0) && (hora_dt2 <= 23))); |
lmsousa | 0:dce171f603a8 | 114 | |
lmsousa | 0:dce171f603a8 | 115 | do |
lmsousa | 0:dce171f603a8 | 116 | { |
lmsousa | 0:dce171f603a8 | 117 | printf("Introduza os minutos da Data 1: (%d-%d): ",0,59); |
lmsousa | 0:dce171f603a8 | 118 | scanf("%d",&min_dt2); |
lmsousa | 0:dce171f603a8 | 119 | if (!((min_dt2>=0) && (min_dt2 <= 59))) |
lmsousa | 0:dce171f603a8 | 120 | printf("Os minutos devem estar compreendidos entre %d e %d \n",0,59); |
lmsousa | 0:dce171f603a8 | 121 | } |
lmsousa | 0:dce171f603a8 | 122 | while(!((min_dt2>=0) && (min_dt2 <= 59))); |
lmsousa | 0:dce171f603a8 | 123 | |
lmsousa | 0:dce171f603a8 | 124 | score_dt1 = dif_data(limite_ano_min,1,1,ano_dt1,mes_dt1,dia_dt1); |
lmsousa | 0:dce171f603a8 | 125 | score_dt2 = dif_data(limite_ano_min,1,1,ano_dt2,mes_dt2,dia_dt2); |
lmsousa | 0:dce171f603a8 | 126 | |
lmsousa | 0:dce171f603a8 | 127 | tmins1= hora_dt1*60+min_dt1; //reduz primeira hora a minutos |
lmsousa | 0:dce171f603a8 | 128 | tmins2= hora_dt2*60+min_dt2; //reduz segunda hora a minutos |
lmsousa | 0:dce171f603a8 | 129 | |
lmsousa | 0:dce171f603a8 | 130 | if ((score_dt1>score_dt2)||((score_dt1 == score_dt2)&&(tmins1>tmins2))) |
lmsousa | 0:dce171f603a8 | 131 | /* |
lmsousa | 0:dce171f603a8 | 132 | Se a primeira data for maior que a segunda |
lmsousa | 0:dce171f603a8 | 133 | troca as datas de forma a ficar data2>data1 |
lmsousa | 0:dce171f603a8 | 134 | */ |
lmsousa | 0:dce171f603a8 | 135 | { |
lmsousa | 0:dce171f603a8 | 136 | tmp_ano=ano_dt1; |
lmsousa | 0:dce171f603a8 | 137 | tmp_mes=mes_dt1; |
lmsousa | 0:dce171f603a8 | 138 | tmp_dia=dia_dt1; |
lmsousa | 0:dce171f603a8 | 139 | tmp_hora=hora_dt1; |
lmsousa | 0:dce171f603a8 | 140 | tmp_min=min_dt1; |
lmsousa | 0:dce171f603a8 | 141 | |
lmsousa | 0:dce171f603a8 | 142 | ano_dt1=ano_dt2; |
lmsousa | 0:dce171f603a8 | 143 | mes_dt1=mes_dt2; |
lmsousa | 0:dce171f603a8 | 144 | dia_dt1=dia_dt2; |
lmsousa | 0:dce171f603a8 | 145 | hora_dt1=hora_dt2; |
lmsousa | 0:dce171f603a8 | 146 | min_dt1=min_dt2; |
lmsousa | 0:dce171f603a8 | 147 | |
lmsousa | 0:dce171f603a8 | 148 | ano_dt2=tmp_ano; |
lmsousa | 0:dce171f603a8 | 149 | mes_dt2=tmp_mes; |
lmsousa | 0:dce171f603a8 | 150 | dia_dt2=tmp_dia; |
lmsousa | 0:dce171f603a8 | 151 | hora_dt2=tmp_hora; |
lmsousa | 0:dce171f603a8 | 152 | min_dt2=tmp_min; |
lmsousa | 0:dce171f603a8 | 153 | |
lmsousa | 0:dce171f603a8 | 154 | tmins1= hora_dt1*60+min_dt1; //Depois da troca recalcula |
lmsousa | 0:dce171f603a8 | 155 | tmins2= hora_dt2*60+min_dt2; //tmins1 e tmins2 |
lmsousa | 0:dce171f603a8 | 156 | } |
lmsousa | 0:dce171f603a8 | 157 | |
lmsousa | 0:dce171f603a8 | 158 | printf("\nData 1: %d-%d-%d %d horas e %d minutos",dia_dt1,mes_dt1,ano_dt1,hora_dt1,min_dt1); |
lmsousa | 0:dce171f603a8 | 159 | printf("\nData 2: %d-%d-%d %d horas e %d minutos",dia_dt2,mes_dt2,ano_dt2,hora_dt2,min_dt2); |
lmsousa | 0:dce171f603a8 | 160 | |
lmsousa | 0:dce171f603a8 | 161 | if (tmins2>=tmins1) //Se tmins2>tmins1 contabiliza dias completos mais algumas horas |
lmsousa | 0:dce171f603a8 | 162 | { |
lmsousa | 0:dce171f603a8 | 163 | horas=(tmins2-tmins1)/60; //diferenca em horas |
lmsousa | 0:dce171f603a8 | 164 | minutos=(tmins2-tmins1)%60; //diferenca em minutos |
lmsousa | 0:dce171f603a8 | 165 | printf("\n\nA diferenca entre estas duas datas e de %ld dias, %d horas e %d minutos. ",dif_data(ano_dt1,mes_dt1,dia_dt1,ano_dt2,mes_dt2,dia_dt2),horas,minutos); |
lmsousa | 0:dce171f603a8 | 166 | } |
lmsousa | 0:dce171f603a8 | 167 | else //Se tmins1>tmins2 retiramos um dia e fazemos a conta ah diferenca de horas |
lmsousa | 0:dce171f603a8 | 168 | { |
lmsousa | 0:dce171f603a8 | 169 | horas=(24*60-tmins1+tmins2)/60; //diferenca em horas |
lmsousa | 0:dce171f603a8 | 170 | minutos=(24*60-tmins1+tmins2)%60; //diferenca em minutos |
lmsousa | 0:dce171f603a8 | 171 | printf("\n\nA diferenca entre estas duas datas e de %ld dias. %d horas e %d minutos. ",dif_data(ano_dt1,mes_dt1,dia_dt1,ano_dt2,mes_dt2,dia_dt2)-1,horas,minutos); |
lmsousa | 0:dce171f603a8 | 172 | } |
lmsousa | 0:dce171f603a8 | 173 | |
lmsousa | 0:dce171f603a8 | 174 | |
lmsousa | 0:dce171f603a8 | 175 | } |
lmsousa | 0:dce171f603a8 | 176 | |
lmsousa | 0:dce171f603a8 | 177 | int bissexto(int ano) |
lmsousa | 0:dce171f603a8 | 178 | { |
lmsousa | 0:dce171f603a8 | 179 | if((ano%400==0)||((ano%4==0)&&(ano%100!=0))) |
lmsousa | 0:dce171f603a8 | 180 | return 1; |
lmsousa | 0:dce171f603a8 | 181 | else |
lmsousa | 0:dce171f603a8 | 182 | return 0; |
lmsousa | 0:dce171f603a8 | 183 | } |
lmsousa | 0:dce171f603a8 | 184 | |
lmsousa | 0:dce171f603a8 | 185 | int dias_do_ano(int ano) |
lmsousa | 0:dce171f603a8 | 186 | { |
lmsousa | 0:dce171f603a8 | 187 | if (bissexto(ano))return 366; |
lmsousa | 0:dce171f603a8 | 188 | else return 365; |
lmsousa | 0:dce171f603a8 | 189 | } |
lmsousa | 0:dce171f603a8 | 190 | |
lmsousa | 0:dce171f603a8 | 191 | int dias_do_mes(int ano,int mes) |
lmsousa | 0:dce171f603a8 | 192 | { |
lmsousa | 0:dce171f603a8 | 193 | if (mes == 1||mes == 3||mes == 5||mes == 7||mes == 8||mes == 10||mes == 12) |
lmsousa | 0:dce171f603a8 | 194 | return 31; |
lmsousa | 0:dce171f603a8 | 195 | else |
lmsousa | 0:dce171f603a8 | 196 | if(mes == 4||mes == 6||mes == 9||mes == 11) |
lmsousa | 0:dce171f603a8 | 197 | return 30; |
lmsousa | 0:dce171f603a8 | 198 | else |
lmsousa | 0:dce171f603a8 | 199 | if (mes == 2) |
lmsousa | 0:dce171f603a8 | 200 | if (bissexto (ano)) |
lmsousa | 0:dce171f603a8 | 201 | return 29; |
lmsousa | 0:dce171f603a8 | 202 | else |
lmsousa | 0:dce171f603a8 | 203 | return 28; |
lmsousa | 0:dce171f603a8 | 204 | else return 255; //erro!!! mes invalido// |
lmsousa | 0:dce171f603a8 | 205 | } |
lmsousa | 0:dce171f603a8 | 206 | |
lmsousa | 0:dce171f603a8 | 207 | int dias_ate_fim_mes(int ano,int mes,int dia) |
lmsousa | 0:dce171f603a8 | 208 | { |
lmsousa | 0:dce171f603a8 | 209 | return (dias_do_mes(ano,mes)-dia); |
lmsousa | 0:dce171f603a8 | 210 | } |
lmsousa | 0:dce171f603a8 | 211 | |
lmsousa | 0:dce171f603a8 | 212 | int dias_dos_meses_intermedios(int ano,int mes1,int mes2) |
lmsousa | 0:dce171f603a8 | 213 | { |
lmsousa | 0:dce171f603a8 | 214 | int i,dias=0; |
lmsousa | 0:dce171f603a8 | 215 | i=mes1; |
lmsousa | 0:dce171f603a8 | 216 | i++; /*O primeiro e o ultimo mes nao sao contabilizados. So os intermedios*/ |
lmsousa | 0:dce171f603a8 | 217 | while (i<mes2) |
lmsousa | 0:dce171f603a8 | 218 | { |
lmsousa | 0:dce171f603a8 | 219 | dias = dias + dias_do_mes(ano,i); |
lmsousa | 0:dce171f603a8 | 220 | i++; |
lmsousa | 0:dce171f603a8 | 221 | } |
lmsousa | 0:dce171f603a8 | 222 | return dias; |
lmsousa | 0:dce171f603a8 | 223 | } |
lmsousa | 0:dce171f603a8 | 224 | |
lmsousa | 0:dce171f603a8 | 225 | int dias_dos_anos_intermedios(int ano1,int ano2) |
lmsousa | 0:dce171f603a8 | 226 | { |
lmsousa | 0:dce171f603a8 | 227 | int i,dias = 0; |
lmsousa | 0:dce171f603a8 | 228 | i=ano1; |
lmsousa | 0:dce171f603a8 | 229 | i++; /*O primeiro e o ultimo ano nao sao contabilizados. So os intermedios*/ |
lmsousa | 0:dce171f603a8 | 230 | while (i<ano2) |
lmsousa | 0:dce171f603a8 | 231 | { |
lmsousa | 0:dce171f603a8 | 232 | dias = dias + dias_do_ano(i); |
lmsousa | 0:dce171f603a8 | 233 | i++; |
lmsousa | 0:dce171f603a8 | 234 | } |
lmsousa | 0:dce171f603a8 | 235 | return dias; |
lmsousa | 0:dce171f603a8 | 236 | } |
lmsousa | 0:dce171f603a8 | 237 | |
lmsousa | 0:dce171f603a8 | 238 | int dias_ate_fim_ano(int ano,int mes,int dia) |
lmsousa | 0:dce171f603a8 | 239 | { |
lmsousa | 0:dce171f603a8 | 240 | return dias_ate_fim_mes(ano,mes,dia)+ dias_dos_meses_intermedios(ano,mes,13); |
lmsousa | 0:dce171f603a8 | 241 | /* Calcula dias ate fim do ano. Como os extremos nao sao contabilizados |
lmsousa | 0:dce171f603a8 | 242 | envia-se 13 para contabilizar Mes de Dezembro */ |
lmsousa | 0:dce171f603a8 | 243 | } |
lmsousa | 0:dce171f603a8 | 244 | |
lmsousa | 0:dce171f603a8 | 245 | int dias_desde_principio_ano(int ano,int mes,int dia) |
lmsousa | 0:dce171f603a8 | 246 | { |
lmsousa | 0:dce171f603a8 | 247 | return dias_dos_meses_intermedios(ano,0,mes)+ dia; |
lmsousa | 0:dce171f603a8 | 248 | /*Calcula dias desde principio do ano. |
lmsousa | 0:dce171f603a8 | 249 | Como os extremos nao sao contabilizados |
lmsousa | 0:dce171f603a8 | 250 | envia-se 0 para contabilizar Janeiro */ |
lmsousa | 0:dce171f603a8 | 251 | } |
lmsousa | 0:dce171f603a8 | 252 | |
lmsousa | 0:dce171f603a8 | 253 | long int dif_data(int ano1,int mes1,int dia1,int ano2,int mes2,int dia2) |
lmsousa | 0:dce171f603a8 | 254 | { |
lmsousa | 0:dce171f603a8 | 255 | if (ano1 == ano2 && mes1 == mes2) |
lmsousa | 0:dce171f603a8 | 256 | return dia2-dia1; |
lmsousa | 0:dce171f603a8 | 257 | else |
lmsousa | 0:dce171f603a8 | 258 | if(ano1 == ano2 && mes1 != mes2) |
lmsousa | 0:dce171f603a8 | 259 | return dias_ate_fim_mes(ano1,mes1,dia1) //Dias ate ao fim do 1o mes// |
lmsousa | 0:dce171f603a8 | 260 | + dias_dos_meses_intermedios(ano1,mes1,mes2) //Dias dos meses intermedios// |
lmsousa | 0:dce171f603a8 | 261 | + dia2; // Dias do ultimo mes // |
lmsousa | 0:dce171f603a8 | 262 | else |
lmsousa | 0:dce171f603a8 | 263 | return dias_ate_fim_ano(ano1,mes1,dia1) |
lmsousa | 0:dce171f603a8 | 264 | + dias_dos_anos_intermedios(ano1,ano2) //Calcula dias dos anos intermedios// |
lmsousa | 0:dce171f603a8 | 265 | + dias_desde_principio_ano(ano2,mes2,dia2); |
lmsousa | 0:dce171f603a8 | 266 | } |
lmsousa | 0:dce171f603a8 | 267 | |
lmsousa | 0:dce171f603a8 | 268 |