Avatar billede ttopholm Nybegynder
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...
Avatar billede arne_v Ekspert
27. maj 2004 - 11:19 #1
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.
Avatar billede ttopholm Nybegynder
27. maj 2004 - 11:23 #2
Kan du komme med et eksempel...
Avatar billede arne_v Ekspert
27. maj 2004 - 11:24 #3
Giv mig 5 minutter.
Avatar billede arne_v Ekspert
27. maj 2004 - 11:33 #4
#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;
}
Avatar billede arne_v Ekspert
27. maj 2004 - 11:36 #5
Og jeg tror iøvrigt nok at den er ligeså simpel som "træk fra" metoden, når
det kommer til stykket.
Avatar billede ttopholm Nybegynder
27. maj 2004 - 12:21 #6
hvorfor har du brugt pointere...
Avatar billede arne_v Ekspert
27. maj 2004 - 12:23 #7
Jeg formodede at du havde 2 char *

Hvis du har de 2 int tv1 og tv2, så kan koden forsimples lidt ...
Avatar billede ttopholm Nybegynder
27. maj 2004 - 13:16 #8
smid et s
Avatar billede arne_v Ekspert
27. maj 2004 - 13:18 #9
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester