C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  Update World C++: Сборник GPL QT исходников
  Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Дебетовая карта Home Credit [CPS] RU

 CdmsDate: Класс для работы с датами / Разное. / Дата, время, таймеры

CdmsDate: Класс для работы с датами

Класс позволяет получать разность между двумя датами, складывать даты, а так же производить другие арифметические действия и преобразования с датами, проверять год на високосность и т.д.

Функциональность

С обьектами класса, представляющими дату можно проводить такие операции:

- создавать из строк вида "1,1,2000" или "02.03.1999". Внимание, "2.2.99" соответствует 0099 году.
даты только после Рождества Христова.:)
или указывать при создании. CdmsDate a1(1.1.2001);

- После создания обьекта дату можно изменить
задавая каждый элемент даты. a1.SetDay(1); a1.SetMonth(1); a1.SetYear(2000)
задавая всю дату a1.SetDate(2,2,1998);
задавая дату строкой a1.SetDateStr("1.1.2001");
оператором присваивания a1="1.1.2001" или a1=b1, где b1 - тоже некая дата или строка.

- Получать доступ
к элементам day=a1.GetDay(); month=a1.GetMonth(); year=a1.GetYear;
к строковому представлению char datestr[11]; strcpy(datestr,a1.tstr())

- сравнивать. bool b=(CdmsDate)"2.2.2000">"1.2.2000"; if(a1==b1) где b1 - строка или другая дата.

- складывать
1) две даты. CdmsDate b1(2.2.2); a1+=b1 или CdmsDate a2=a1+b1. Так мы узнаем какая дата
будет через два года, два дня и два месяца после даты a1
2) Дату и число. CdmsDate a2=a1+n или a1+=n где int n=19 некое число. Так мы узнаем какая
дата будет через n дней после даты a1

- вычитать
1) из даты дату. _Только_ оператором -=. a1-=b1, где CdmsDate b1(3.3.0) или char b1="3.3.0"
(при b1- строке автоматом преобразует b1 в дату). Тогда в a1 будет дата, которая была 3
месяца и три дня назад. (для данного примера)
2) из даты дату и получиь число. _ТОЛЬКО_ оператором -. int n=a1-b1. где a1 - дата, b1 - дата
или строка. (две строки нельзя, т.к. комп не догадаеться, к чему конвертить строки). Таким
образом _МЫ_ _ПОЛУЧИМ_ _КОЛИЧЕСТВО_ _ДНЕЙ_ _РАЗДЕЛЯЮЩИХ_ _ЭТИ_ _ДВЕ_
_ДАТЫ_ например между 3.3.2000 и 28.2.2000 будет 4 дня. Если из меньшей вычитать
большую получим отрицательное число. Например a1(3.3.2001)-"3.4.2001"=-31
3) вычитать из даты число. a1-=n или CdmsDate a2=a1-n; так мы узнаем, какая дата была n дней
назад.

ЗАМЕЧАНИЕ:
1) При всех операциях "сегодняшнее" число , не учитывается. например через 2 дня от 1.1.2001
будет 3.1.2001 а не 2.1.2001 а за два дня до 4.1.2001 было 2.1.2001 а не 3.1.2001.
2) Проверка года на високосность есть.

Планируемые дополнения:
1) добавить оператор вывода в поток. cin<<"a1="<<a1<<"\r\n"; //где a1 - обьект класса CdmsDate
2) добавить оператор преобразования к char* вместо функции .tstr(). char[11]strdate;
strcpy(strdate,a1);//где a1- обьект CdmsDate
3) добывить дни недели и возможность с нимим работать, узнавать какой день недели был 1.1
2001 основываясь на дне недели 2.2.2002. 4) все что вы мне напишите :) (если конечно не
очень много.




Дебетовая карта Home Credit [CPS] RU