Toon posts:

C routine/datatype om sec bij tijd op te tellen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil een logbestand uitlezen, daarin staat steeds een header met een tijd, een aantal samples, en de tijd ertussen (meestal 300 sec oid)
Nu wil ik dit wegschrijven in een DB, maar dan met per logsample een datum/tijd.

Ik zoek nu een C functie (c++ eventueel ook, maar liever C) om bij de tijd die ik uit lees als een tm steeds het aantal secondes toe te voegen. kan echter niet direct iets vinden wat bijvoorbeeld het equivalent van VB.NET's DATETIME.Addseconds(300) doet.

Weten jullie zo uit het blote hoofd zoiets, of moet ik een moeilijke routine gaan schrijven waarin ik alleuitzonderingen moet afvangen...?

  • Pooh
  • Registratie: April 2001
  • Niet online

Pooh

Lees eens een boek

localtime ( mktime(someTimeStruct) + 300 );

of

gmtime ( mktime(someTimeStruct) + 300 );

edit: de tm struct is een plaatselijke tijd, normaalgesproken gebruik je die niet intern, maar pas wanneer je wegschrijft of inleest. time_t is de tijd in seconden sinds de epoch (1 jan 1970 0:00 UTC).

mktime maakt van een tm een time_t, gmtime en localtime doen 't omgekeerde.

http://www.cplusplus.com/ref/ctime/

Verwijderd

Topicstarter
Super, Ik zat idd net aan die epoch tijd te denken.

FF prutsen

Verwijderd

Topicstarter
Nog één probleem...
mijn routine nu:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int dTime2Epoch(int hour, int min, int sec, int year, int mon,int mday, int wday)
{
   struct tm date_tm;
   time_t date_epoch;
    
   date_tm.tm_hour   =hour;
   date_tm.tm_min   =min;
   date_tm.tm_sec   =sec;
   date_tm.tm_mon   =mon;
   date_tm.tm_wday   =wday; 
   date_tm.tm_year   =year + 100;
   date_tm.tm_isdst =-1; 
   date_tm.tm_mday   =mday;

   printf("orig: %s ", asctime(&date_tm));

   date_epoch = mktime(&date_tm) ;
   printf("modded: %s ", asctime(localtime(&date_epoch)));
   return 0;
}

de aanroep met de gegevens uit de log:
dTime2Epoch(10,50,5,2,6,25,2);

en de output....

orig: Tue Jul 25 10:50:05 2002
modded: Thu Jul 25 10:55:05 2002

Hij vind dus dat het donderdag is na de conversie. Als ik er geen 300 sec bij optel doet hij dit ook.
Iemand hier een verklaring voor? Het zou kunnen liggen aan de day-of-year property, maar die heb ik niet.

Verwijderd

Topicstarter
Never mind... tm doet in maanden van 0-11, ik zie het nu... DOH!!!!