27. maj 2004 - 11:16
Der er
8 kommentarer og 1 løsning
Forskellen på to datoer
Jeg har to datoer i formatet yyyymmdd f.eks 20040527 og jeg skal finde forskellen i dage.. hvordan gør jeg det...
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
Den simple måde er at splitte i 3 dele og så trække fra med lån. Den pæne måde er at konvertere dem til time_t med mktime og så kalde difftime til at få forskellen i sekunder og dividere med 24*60*60.
Kan du komme med et eksempel...
#include <stdio.h> #include <stdlib.h> #include <time.h> int td2(char *ts1,char *ts2) { int tv1,y1,m1,d1,tv2,y2,m2,d2; time_t t1,t2; struct tm tm1,tm2; tv1 = atoi(ts1); y1 = tv1 / 10000; m1 = (tv1 / 100) % 100; d1 = tv1 % 100; tm1.tm_year = y1 - 1900; tm1.tm_mon = m1 - 1; tm1.tm_mday = d1; tm1.tm_hour = 12; tm1.tm_min = 0; tm1.tm_sec = 0; t1 = mktime(&tm1); tv2 = atoi(ts2); y2 = tv2 / 10000; m2 = (tv2 / 100) % 100; d2 = tv2 % 100; tm2.tm_year = y2 - 1900; tm2.tm_mon = m2 - 1; tm2.tm_mday = d2; tm2.tm_hour = 12; tm2.tm_min = 0; tm2.tm_sec = 0; t2 = mktime(&tm2); return difftime(t1,t2)/(24*60*60); } int main() { printf("%d\n",td2("20040527","20040429")); return 0; }
Og jeg tror iøvrigt nok at den er ligeså simpel som "træk fra" metoden, når det kommer til stykket.
hvorfor har du brugt pointere...
Jeg formodede at du havde 2 char * Hvis du har de 2 int tv1 og tv2, så kan koden forsimples lidt ...
Kurser inden for grundlæggende programmering