Hello Fa.,
Saturday, April 13, 2002, 12:23:43 PM, you wrote:
FRM> Bsp.: Am 15.08.2005 will ich mir einen neuen PC kaufen.
FRM> Wieviel Tage ist es bis dahin, von heute an.
-- da ich ja grad am C'len bin, habe ich da mal sowas (mit hilfe des
Buches) geschrieben.
/* ............................................................ */
int tage[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
struct datum {
unsigned tag:5;
unsigned monat:4;
unsigned jahr:7;
};
int date_diff(struct datum d1, struct datum d2);
void main(int argc, char **argv) {
int tag, monat, jahr;
struct datum d1, d2;
if (argc != 3) {
printf("%s start_date end_date\n", argv[0]);
exit(1);
}
sscanf(argv[1], "%d.%d.%d", &tag, &monat, &jahr);
d1.tag=tag; d1.monat=monat; d1.jahr=jahr;
sscanf(argv[2], "%d.%d.%d", &tag, &monat, &jahr);
d2.tag=tag; d2.monat=monat; d2.jahr=jahr;
printf("diff: %d\n", date_diff(d1, d2));
}
int schaltjahr(int jahr)
{
return (jahr%4 == 0 && jahr%100 != 0 || jahr%400 == 0);
}
long day_num(struct datum d)
{
long res=0;
int i;
for (i = 0; i < d.jahr; i++) {
res += 365;
if (schaltjahr(1900 + i)) {
res++;
}
}
for (i = 1; i < d.monat; i++) {
res += tage[i-1];
if (i == 2 && schaltjahr(1900 + d.jahr)) {
res++;
}
}
res += d.tag;
return res;
}
int date_diff(struct datum d1, struct datum d2)
{
return (int)(day_num(d2) - day_num(d1));
}
/* ............................................................ */
----------------------------------------------------------------------------
PUG - Penguin User Group Wiesbaden - http://www.pug.org