In POSIX a time_t
value is specified to be seconds, however that's not guaranteed by the C standard, so it might not be true on non-POSIX systems. It commonly is (in fact, I'm not sure how often it isn't a value representing seconds).
Here's an example of adding time values that doesn't assume a time_t
represents seconds using the standard library facilities, which are really not particularly great for manipulating time:
#include <time.h>
#include <stdio.h>
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
", asctime( &now_tm));
printf( "%s
", asctime( &then_tm));
return 0;
}
Parsing your time string into an appropriate struct tm
variable is left as an exercise. The strftime()
function can be used to format a new one (and the POSIX strptime()
function can help with the parsing).
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…