Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как получить предыдущую дату? / 6 сообщений из 6, страница 1 из 1
15.10.2003, 12:37
    #32293925
alex-ikar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить предыдущую дату?
Помогите решить проблему.

С помощью класса CTime получаю тек. дату ( ГГГГММДД ) и все ОК.

Код: plaintext
1.
2.
3.
4.
5.
CTime currentTime = CTime::GetCurrentTime();
YYYY = atoi(currentTime.Format( "%#Y" ));
MM = atoi(currentTime.Format( "%#m" ));
DD = atoi(currentTime.Format( "%#d" ));
WorkingDate = ((((YYYY *  100 ) + MM) *  100 ) + DD);


Но как мне получить предыдущую дату? (для месяца и года это не проблема - можно просто отнять 1, но как быть с числом не знаю)

Код: plaintext
1.
2.
3.
4.
5.
6.
if (DD ==  1 )
{  if (MM ==  1 )
   {   YYYY = YYYY -  1 ;			
        MM =  12 ;
        DD =  31 ;    }    else	{   MM = MM -  1 ;			
                                         DD = ? ? ? ?;	}
}   else  {   DD = DD -  1 ;  }


Может вообще есть какая-нить ф-ция?

Заранее спасибо.
...
Рейтинг: 0 / 0
15.10.2003, 13:17
    #32294000
DarkCat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить предыдущую дату?
Ну ващето ты не учёл, что не в каждом месяце 31 день и есть ещё весокосные годы.
И если ты решил поглубже поотнимать, то несколько сот лет назад мы переходили со старого летоисчисления на новое

Так что алгоритм должен быть посложнее.
В C++Builder для этого есть класс TDateTime, и у него свойство (float) Val . Целая часть этого foata - дни, после запятой минуты.
Очень удобный класс.

Если у тебя такого нет, можешь сам написать - не сложно :))

...
Рейтинг: 0 / 0
15.10.2003, 13:30
    #32294030
alex-ikar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить предыдущую дату?
2DarkCat
>Ну ващето ты не учёл, что не в каждом месяце 31 день и есть ещё весокосные годы.

Если ты насчет :

Код: plaintext
1.
2.
3.
4.
5.
if (DD ==  1 )
{  if (MM ==  1 )
   {   YYYY = YYYY -  1 ;			
        MM =  12 ;
        DD =  31 ;    } 
......


То ты конечно прав, но только независимо от того какой это год весокосный или нет в декабре у него все равно 31 день.

2All
А что ф-ций по такого рода преобразованию дат вообще нет? :(
...
Рейтинг: 0 / 0
15.10.2003, 14:13
    #32294105
_Konst
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить предыдущую дату?
А зачем тебе ф-ии??
CTimeSpan вот что нужно.

Код: plaintext
1.
2.
3.
CTime currentTime = CTime::GetCurrentTime(), prevTime;
CTimeSpan span( 1 ,  0 ,  0 ,  0 );

prevTime = currentTime - span;
...
Рейтинг: 0 / 0
15.10.2003, 14:34
    #32294137
alex-ikar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить предыдущую дату?
2_Konst

Спасибо :)
...
Рейтинг: 0 / 0
15.10.2003, 18:32
    #32294540
q
q
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить предыдущую дату?
а зачем СTime. можно восползоваться фукц. из стандартной библиотеки
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как получить предыдущую дату? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]