Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Текущая дата со сдвигом

6.1K
16 марта 2006 года
Flex25
50 / / 14.03.2006
Вот так я получаю текущее время по Гринвичу, код работает правильно.
 
Код:
struct tm *time_now;
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;


Вопрос: как мне сделать так, чтобы вывести не просто текущую дату, а текущую дату со смещением на день, месяц или год?
1.8K
16 марта 2006 года
_const_
229 / / 26.11.2003
Цитата:
Originally posted by Flex25
Вот так я получаю текущее время по Гринвичу, код работает правильно.
 
Код:
struct tm *time_now;
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 += 24 * 60 * 60; // +1 день
secs_now += days_per_month * 24 * 60 * 60; // месяц
secs_now += 365 * 24 * 60 * 60; // год
tm = *gmtime(&secs_now);
6.1K
16 марта 2006 года
Flex25
50 / / 14.03.2006
Цитата:
Originally posted by _const_
Ну если time_t - в секундах, то видимо
 
Код:
secs_now += 24 * 60 * 60; // +1 день
secs_now += days_per_month * 24 * 60 * 60; // месяц
secs_now += 365 * 24 * 60 * 60; // год
tm = *gmtime(&secs_now);


Этот пример верный, но я и сам до этого додумался. А проблема в данном случае в том, что я не знаю заранее: сколько днеей в данном конкретном месяце и сколько дней в данном году. Из-за этого я нему так легко отматать несколько месяцев от даты, если отматывать интервал в секундах.

1.8K
16 марта 2006 года
_const_
229 / / 26.11.2003
Цитата:
Originally posted by Flex25
Этот пример верный, но я и сам до этого додумался. А проблема в данном случае в том, что я не знаю заранее: сколько днеей в данном конкретном месяце и сколько дней в данном году. Из-за этого я нему так легко отматать несколько месяцев от даты, если отматывать интервал в секундах.


Ну так сначала получаем tm, из него - месяц и год, сами считаем кол-во дней в месяце (году), затем добавляем к secs_now, и опять в tm.

395
17 марта 2006 года
RelB
367 / / 09.11.2002
Цитата:
Originally posted by _const_
Ну так сначала получаем tm, из него - месяц и год, сами считаем кол-во дней в месяце (году), затем добавляем к secs_now, и опять в tm.


Все проще...
Советую посмотреть в сторону классов
СTime и CTimeSpan или
COleDateTime и COleDateTimeSpan

6.1K
17 марта 2006 года
Flex25
50 / / 14.03.2006
Цитата:
Originally posted by RelB
Все проще...
Советую посмотреть в сторону классов
СTime и CTimeSpan или
COleDateTime и COleDateTimeSpan


Функции CTime и CTimeSpan не относятся к стандартной библиотеки классов. Эти функции - из Майкрософтского MFC, а мен надо, чтобы прога моя и на Unix запустилась бы.

395
17 марта 2006 года
RelB
367 / / 09.11.2002
Цитата:
Originally posted by Flex25
Функции CTime и CTimeSpan не относятся к стандартной библиотеки классов. Эти функции - из Майкрософтского MFC, а мен надо, чтобы прога моя и на Unix запустилась бы.


Ну тогда придется тебе использовать там всякие
gmtime, mktime, difftime и т.п....

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог