Avatar billede Slettet bruger
19. marts 2006 - 21:13 Der er 20 kommentarer og
1 løsning

Finde lokal tid

Hej eksperter!
Hvordan finder man (på den lokale maskine) nemmest med C++:
- Denne månedsdag
- Denne måned
- Dette årstal

- Denne ugedag

- Antal dage i denne måned *
- Antal dage i dette år *

*: Skal også tage højde for skudår!

Kan i give et konkret eksempel?
- Tak!


- Toke
Avatar billede arne_v Ekspert
19. marts 2006 - 21:14 #1
kalder først time funktionen og så localtime funktionen

de 2 sidste skal kodes men er ret nemme
Avatar billede arne_v Ekspert
19. marts 2006 - 21:17 #2
eksempel:

#include <time.h>
#include <stdio.h>

int main()
{
  time_t t;
  struct tm *ts;
  t=time(NULL);
  ts=localtime(&t);
  printf("It is %02d/%02d/%04d %02d:%02d",ts->tm_mday,ts->tm_mon+1,1900+ts->tm_year,ts->tm_hour,ts->tm_min);
  return 0;
}

(det er C men virker fint i C++)
Avatar billede arne_v Ekspert
19. marts 2006 - 21:19 #3
antal dage i året er 366 hvis skudår ellers 365

man tester om skudår med:

(year % 4 == 0) && ((year % 100 != 0) || (year % 400 == 0))

antal dage i en måned kan du lave som opslag i et 2D array udfra måned og
skudår eller ej
Avatar billede Slettet bruger
20. marts 2006 - 16:18 #4
Men hvad betyder det?
Hvad gør struct?

Hvorfor virker cin.get desuden ikke her?

#include <iostream>

#include <time.h>
#include <stdio.h>

int main()
{
    char test;

    time_t t;
    struct tm *ts;
    t=time(NULL);
    ts=localtime(&t);
    printf("It is %02d/%02d/%04d %02d:%02d",ts->tm_mday,ts->tm_mon+1,1900+ts->tm_year,ts->tm_hour,ts->tm_min);
    return 0;
Avatar billede arne_v Ekspert
20. marts 2006 - 16:26 #5
struct i C er en class uden metoder

struct i C++ er en class med nogle lidt andre defaults for private/public

----

hvor bruger du cin.get() ?
Avatar billede Slettet bruger
20. marts 2006 - 17:45 #6
Så 'struct tm *ts' sætter konstanten 'tm' til '*ts'?
Jeg forstår det ikke helt...
Og cin.get... Hvad kan jeg ellers bruge??
Avatar billede arne_v Ekspert
20. marts 2006 - 18:06 #7
nej

struct tm *ts;

erklaerer variablen ts til at vaere af typen pointer til struct ts

(i C++ er struct keywordet optional, men det er required i C)
Avatar billede Slettet bruger
20. marts 2006 - 18:10 #8
NAAHH!!!! Sådan!
Hvad ville du bruge i stedet for cin.get()?
Avatar billede arne_v Ekspert
20. marts 2006 - 18:11 #9
og jeg kan ikke sige hvordan du skal bruge cin.get() eller foreslaa
alternativer, naar du ikke har vist hvor du har proevet at saette det
ind eller forklaret hvad den skal bruges til
Avatar billede Slettet bruger
20. marts 2006 - 18:49 #10
At pause processen, så vinduet ikke lukkes - hvad kan cin.get() ellers bruges til?
Avatar billede arne_v Ekspert
20. marts 2006 - 18:55 #11
teknisk set laeser cin.get() bare et tegn, saa den den bruges til mange ting

hvad sker der med:

  printf("It is %02d/%02d/%04d %02d:%02d",ts->tm_mday,ts->tm_mon+1,1900+ts->tm_year,ts->tm_hour,ts->tm_min);
  cin.get();
  return 0;
}

?
Avatar billede Slettet bruger
20. marts 2006 - 19:17 #12
SORRYYY!!!!
Jeg sagde

return 0;
cin.get();

i stedet for omvendt :S

Nå, tak for hjælpen;
bare smid et svar :D
Avatar billede Slettet bruger
20. marts 2006 - 19:18 #13
Kan man forresten også indstille den lokale pc's ur?
Avatar billede Slettet bruger
20. marts 2006 - 19:23 #14
Og nu er jeg lidt vanskelig;
hvad betyder
'%'
i
'year % 4 == 0) && ((year % 100 != 0) || (year % 400 == 0))'
?
Og hvad betyder alle de der %-ting (som %02d) i
'printf("It is %02d/%02d/%04d %02d:%02d",ts->tm_mday,ts->tm_mon+1,1900+ts->tm_year,ts->tm_hour,ts->tm_min)'
?
Avatar billede Slettet bruger
20. marts 2006 - 19:23 #15
*)

Og nu er jeg lidt vanskelig;
hvad betyder
'%'
i
'((year % 4 == 0) && ((year % 100 != 0) || (year % 400 == 0))'
?
Og hvad betyder alle de der %-ting (som %02d) i
'printf("It is %02d/%02d/%04d %02d:%02d",ts->tm_mday,ts->tm_mon+1,1900+ts->tm_year,ts->tm_hour,ts->tm_min)'
?
Avatar billede arne_v Ekspert
20. marts 2006 - 19:28 #16
et svar
Avatar billede arne_v Ekspert
20. marts 2006 - 19:30 #17
Avatar billede arne_v Ekspert
20. marts 2006 - 19:31 #18
x % 4 betyder rest ved division med 4 (modulus)

%d i printf betyder at der skal saettes et heltal ind der fra argument listen
Avatar billede Slettet bruger
20. marts 2006 - 21:04 #19
Okaj, nice!
Så 10%6 er 4?
SetSystemTime kræver bare #include <windows.h>, ikke?
Tak for hjælpen!
Avatar billede arne_v Ekspert
20. marts 2006 - 21:51 #20
ja

ja
Avatar billede Slettet bruger
21. marts 2006 - 16:15 #21
Tak igen

Tak igen igen

--- LUKKET ---
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