Текущая дата со сдвигом
time_t secs_now;
char str[80];
tzset();
time(&secs_now);
time_now = gmtime(&secs_now);
strftime(str, 80, "%a, %d-%b-%Y %H:%M:%S GMT", time_now);
cout << str;
Вопрос: как мне сделать так, чтобы вывести не просто текущую дату, а текущую дату со смещением на день, месяц или год?
Вот так я получаю текущее время по Гринвичу, код работает правильно.
time_t secs_now;
char str[80];
tzset();
time(&secs_now);
time_now = gmtime(&secs_now);
strftime(str, 80, "%a, %d-%b-%Y %H:%M:%S GMT", time_now);
cout << str;
Вопрос: как мне сделать так, чтобы вывести не просто текущую дату, а текущую дату со смещением на день, месяц или год?
Ну если time_t - в секундах, то видимо
secs_now += days_per_month * 24 * 60 * 60; // месяц
secs_now += 365 * 24 * 60 * 60; // год
tm = *gmtime(&secs_now);
Ну если time_t - в секундах, то видимо
secs_now += days_per_month * 24 * 60 * 60; // месяц
secs_now += 365 * 24 * 60 * 60; // год
tm = *gmtime(&secs_now);
Этот пример верный, но я и сам до этого додумался. А проблема в данном случае в том, что я не знаю заранее: сколько днеей в данном конкретном месяце и сколько дней в данном году. Из-за этого я нему так легко отматать несколько месяцев от даты, если отматывать интервал в секундах.
Этот пример верный, но я и сам до этого додумался. А проблема в данном случае в том, что я не знаю заранее: сколько днеей в данном конкретном месяце и сколько дней в данном году. Из-за этого я нему так легко отматать несколько месяцев от даты, если отматывать интервал в секундах.
Ну так сначала получаем tm, из него - месяц и год, сами считаем кол-во дней в месяце (году), затем добавляем к secs_now, и опять в tm.
Ну так сначала получаем tm, из него - месяц и год, сами считаем кол-во дней в месяце (году), затем добавляем к secs_now, и опять в tm.
Все проще...
Советую посмотреть в сторону классов
СTime и CTimeSpan или
COleDateTime и COleDateTimeSpan
Все проще...
Советую посмотреть в сторону классов
СTime и CTimeSpan или
COleDateTime и COleDateTimeSpan
Функции CTime и CTimeSpan не относятся к стандартной библиотеки классов. Эти функции - из Майкрософтского MFC, а мен надо, чтобы прога моя и на Unix запустилась бы.
Функции CTime и CTimeSpan не относятся к стандартной библиотеки классов. Эти функции - из Майкрософтского MFC, а мен надо, чтобы прога моя и на Unix запустилась бы.
Ну тогда придется тебе использовать там всякие
gmtime, mktime, difftime и т.п....