aggiungi secondi a una data

Devo aggiungere secondi a una data. Ad esempio, se ho una data come 2009127000000, devo aggiungere i secondi a questa data. Un altro esempio, aggiungere 50 secondi al 20091231235957.

È ansible in C?

Il tipo di data / ora C time_t è implementato come il numero di secondi da una certa data, quindi per aggiungere secondi ad essa basta usare la normale aritmetica. Se questo non è quello che stai chiedendo, ti preghiamo di chiarire la tua domanda.

In POSIX un valore time_t viene specificato in secondi, tuttavia ciò non è garantito dallo standard C, quindi potrebbe non essere vero su sistemi non POSIX. È comunemente (in effetti, non sono sicuro di quanto spesso non sia un valore che rappresenta secondi).

Ecco un esempio di aggiunta di valori temporali che non presuppongono che time_t rappresenti secondi utilizzando le funzionalità di libreria standard, che non sono particolarmente utili per manipolare il tempo:

 #include  #include  int main() { time_t now = time( NULL); struct tm now_tm = *localtime( &now); struct tm then_tm = now_tm; then_tm.tm_sec += 50; // add 50 seconds to the time mktime( &then_tm); // normalize it printf( "%s\n", asctime( &now_tm)); printf( "%s\n", asctime( &then_tm)); return 0; } 

L’analisi della stringa del tempo in una variabile struct tm appropriata viene lasciata come esercizio. La strftime() può essere utilizzata per strptime() una nuova (e la funzione strptime() POSIX può aiutare con l’analisi).

Usa tipi e funzioni da .

 time_t now = time(0); time_t now_plus_50_seconds = now + 50; time_t now_plus_2_hours = now + 7200; 

dichiara le funzioni che trattano i tipi time_t e struct tm . Queste funzioni possono fare tutto ciò che vuoi.

Prova qualcosa del genere: (Nota: nessun controllo degli errori)

 include  char* string = ...; char buf[80]; struct tm; strptime(string, "%Y%m...", &tm); tm->tm_isdst = 0; strftime(buf, sizeof(buf), "%Y%m...", localtime(mktime(&tm) + 50));