Help - Search - Members - Calendar
Full Version: Вычисление разницы дат
форум о программировании : > General Programming (только для чтения) > Faq > Числа


Sheridan
Код
void __fastcall DatesBetween(TDateTime Begun, TDateTime End, int& Years, int& Months, int& Days)
{
Word bYear, bMonth, bDay, eYear, eMonth, eDay;
int Year, Month, Day, DayInMonth;

 DecodeDate (Begun, bYear, bMonth, bDay);
 DecodeDate (End, eYear, eMonth, eDay);
 Day = eDay-bDay;

 if (eMonth==2)
 {
  if (eYear%4==0) DayInMonth = 29;
  else DayInMonth = 28;
 }
 else
 {
 if(eMonth==1||eMonth==3||eMonth==5||eMonth==7||
    eMonth==8||eMonth==10||eMonth==12) DayInMonth = 31;
  else DayInMonth = 30;
 }

 if (Day<0)
 {
  eMonth--;
  Day = (eDay+DayInMonth)-bDay;
 }
 Month = eMonth-bMonth;
 if (Month<0)
 {
  Month += 12;
  eYear--;
 }
 Year = eYear-bYear;

 Years += Year;
 Months += Month;
 Days += Day;

 if (Days > DayInMonth)
 {
  Days -= DayInMonth;
  Months ++;
 }
 if (Months>12)
 {
  Months -= 12;
  Years++;
 }
}


Передаем начальную - Begun, конечную дату - End. В Years,Months,Days заносятся соответствующие результаты. cool.gif
klep
а у меня есть другой код , который считает количество дней между двумя датами.

Код
#define DAY_AT_YEAR 365
#define DAY_AT_MONTH 30
#define DAYOF 29

SYSTEMTIME *ft,*cur;

// в CUR  - текущее время
//  FT - необходимое время

tt()
{

       Sum1=((cur->wYear-ft->wYear)*DAY_AT_YEAR)+((cur->wMonth-ft->wMonth)*DAY_AT_MONTH)+( (cur->wDay-ft->wDay));

       if( Sum1 > DAYOF)
       {
           cout << "пришло время очистки: " << endl;

       }

}
cARRIOT
у каво меньше код получица =))
Код
int k;
TDateTime Date1,Date2,DateFuck;
DateFuck = Date1-Date2;
k = StrToInt(DateFuck.FormatString("dd");
Sheridan
Цитата
у каво меньше код получица
а посчитай вручную дни между датами разницей в 7-9 лет... и сравни с результатом. cool.gif
cARRIOT
а в задании не написано што надо пощитать скока лет! я тока пощитал скока дней.. а там уш дели на 365 .. узнавай весокосные ..
Sheridan
Я и имел ввиду количество дней.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.