Добавление времени в структуру ТМ


Проще говоря, это функция правильный и безопасный способ, чтобы добавить и/или отнять время на ТМ структура (от )?

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

секунд может быть любым значением, мол, больше, чем 60 (или меньше -60). Я пользуюсь функцией mktime , чтобы настроить другие значения в ТМ, но я не знаю, если это правильно.

Я также не беру в расчет будет ниже 1970 или выше 3001 за год, который я считаю по умолчанию границы для использования функции mktime работы. Я могу проверить это в другом месте.



10741
8
задан 30 сентября 2011 в 09:09 Источник Поделиться
Комментарии
2 ответа

Я бы добавил проверку на вменяемость указатель, а также:

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

Но кроме того, что это выглядит правильным.

Читая некоторые документации на функцией mktime, это, кажется, что она предназначалась для.

3
ответ дан 1 октября 2011 в 10:10 Источник Поделиться

Вы должны поставить несколько проверок. Например, если вы добавляете более чем 60 секунд, тебе тоже нужно прирастить минут. Если значение минут 59, вы должны инкремент часов.

-1
ответ дан 29 ноября 2012 в 01:11 Источник Поделиться