I need to add seconds to a date. For example, if I have a date such as 2009127000000, I need to add the seconds to this date. Another example, add 50 seconds to 20091231235957.
Is this possible in C?
I need to add seconds to a date. For example, if I have a date such as 2009127000000, I need to add the seconds to this date. Another example, add 50 seconds to 20091231235957.
Is this possible in C?
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\n", asctime( &now_tm));
printf( "%s\n", 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).
time_t from the modified then_tm?mktime returns the time_t you want.tm_min gives something like Current time: 19:56:21 will fire at: 19:176:21 using std::put_time(my_tm,"%X")Use types and functions from <time.h>.
time_t now = time(0);
time_t now_plus_50_seconds = now + 50;
time_t now_plus_2_hours = now + 7200;
<time.h> declares functions that deal with time_t and struct tm types. These functions can do all you want.
<time.h> from POSIX 2016: pubs.opengroup.org/onlinepubs/9699919799/basedefs/time.h.htmlThe C date/time type time_t is implemented as the number of seconds since a certain date, so to add seconds to it you simply use normal arithmetic. If this is not what you are asking about please make your question clearer.
time_t is commonly seconds, but isn't necessarily so.