Avatar billede tigertool Nybegynder
05. august 2004 - 21:57 Der er 13 kommentarer og
1 løsning

Dato og tid

Hvad er der af muligheder for at få dags dato og tid i C++?

Endvidere - nogen der har en ide til hvordan man tjekker at brugerens dato og tid er korrekte? NTP over nettet?
Avatar billede arne_v Ekspert
05. august 2004 - 22:06 #1
time_t t = time(NULL);

henter tiden (antal sekunder siden 1-JAN-1970).

Det kan så konverteres til en struct tm som indeholder alle de
kendte felter med localtime.
Avatar billede arne_v Ekspert
05. august 2004 - 22:08 #2
Et lille 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,1900+ts->tm_year,ts->tm_hour,ts->tm_min);
  return 0;
}
Avatar billede arne_v Ekspert
05. august 2004 - 22:09 #3
I.s.f. localtime kan du også bruge ctime eller strftime. Eksempler på
disse:

#include <iostream>
#include <ctime>

using namespace std;

int main()
{
  time_t t = time(NULL);
  cout << ctime(&t) << endl;
  char buf[33];
  strftime(buf,sizeof(buf),"%d-%m-%Y %H:%M:%S",localtime(&t));
  cout << buf << endl;
  return 0;
}
Avatar billede arne_v Ekspert
05. august 2004 - 22:10 #4
Hvis du skal bruge NTP tror jeg at du skal finde et bibliotek til det.

NTP protokollen er ikke helt simpel at implementere.
Avatar billede tigertool Nybegynder
05. august 2004 - 22:17 #5
ved

ts->tm_year

får jeg 104 retur.. hvordan passer det ind?
Avatar billede arne_v Ekspert
05. august 2004 - 22:19 #6
tm_year indeholder antal år siden år 1900.

1900 + 104 = 2004

(jeg ligger også 1900 til i mit kode eksempel)
Avatar billede tigertool Nybegynder
05. august 2004 - 22:19 #7
Ang. NTP er der andre muligheder at sikre sig at brugeren har rigtig dato og tid? Der er adgang til en database, som sidder på maskinen lokalt.. men hvis jeg får en current_date eller current_time fra den, det kan man jo heller ikke være sikker på at det stemmer..
Avatar billede tigertool Nybegynder
05. august 2004 - 22:21 #8
og ts->tm_mon skal der lægges en til, ikke? JAN = 0 ?
Avatar billede arne_v Ekspert
05. august 2004 - 22:23 #9
Et muligt alternativ var at lade programmet connecte til en server på
nettet og bare bede om tiden. Og sige at de 0.5-1 sekund det tager må
tiden godt være forkert.

Den server kan være en simpel socket server eller for den sags skyld
et PHP eller ASP script.
Avatar billede arne_v Ekspert
05. august 2004 - 22:24 #10
Det skal nok passe.
Avatar billede tigertool Nybegynder
05. august 2004 - 22:25 #11
Ja.. det var selvfølgelig en mulighed..

kunne man via http requeste en site fra en web-server som bare gav resultatet f.eks.: 05-08-2004 22:29
og så må en eller anden måde arbejde udfra det? Jeg er lidt på dybt vand her..
Avatar billede arne_v Ekspert
05. august 2004 - 22:33 #12
Noget i den stil.
Avatar billede tigertool Nybegynder
05. august 2004 - 22:38 #13
Ok.. Det vil jeg så overveje.
Endnu engang tak. og husk et svar :)
Avatar billede arne_v Ekspert
05. august 2004 - 22:39 #14
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