Adding time to struct tm Simply put, is this function a correct and safe way to add and/or subtract time to a tm struct (from &lt;time.h&gt;)?

void AddTime(int seconds, tm *date)
{
    date-&gt;tm_sec += seconds;
    mktime(date);
}


seconds could be any value, supposedly larger than 60 (or smaller than -60). I'm using mktime to readjust the other values in tm, but I don't know if that's right.

I'm also not taking into account going below 1970 or above 3001 for the year, which I think are the default bounds for mktime to operate. I can check for that elsewhere.
I would add a sanity check on the pointer as well:

void AddTime(int seconds, tm* date) {
    if (date == NULL) return;
    date-&gt;tm_sec += seconds;
    mktime(date);
}


But other than that it looks correct.

Reading some documentation on mktime, this appears to be what it was meant for.