21/03/10 18:59
robrock80
Intendevo dire che nella riga
viene invocato il costruttore di ULONGLONG e io invece avevo scambiato systemTimeIn_ms per una funzione.
Comunque ho risolto: mi sono creato la mie funzioni per calcolare il tempo in millisecondi a partire da un anno da passare in input alla funzione. Ecco il codice in caso qualcuno si dovessa imbattere nello stesso problema
Grazie a tutti per i vostri aiuti
ULONGLONG systemTimeIn_ms( uli.QuadPart/10000 );
viene invocato il costruttore di ULONGLONG e io invece avevo scambiato systemTimeIn_ms per una funzione.
Comunque ho risolto: mi sono creato la mie funzioni per calcolare il tempo in millisecondi a partire da un anno da passare in input alla funzione. Ecco il codice in caso qualcuno si dovessa imbattere nello stesso problema
long long int getCurrentTimeMillis(unsigned int startYear) { int getPassedDaysSinceBeginningOfCurrentYear(SYSTEMTIME *); SYSTEMTIME timeInfo; GetSystemTime(&timeInfo); long long int timeMillis = -1; if (startYear < timeInfo.wYear) { int passedDays = getPassedDaysSinceFirstDayOfYear(startYear, timeInfo.wYear - 1) + getDaysCountFromYearToYear(&timeInfo); timeMillis = timeInfo.wMilliseconds + (timeInfo.wSecond*1000) + ((timeInfo.wMinute*60)*1000) + (((timeInfo.wHour*60)*60)*1000) + ((((passedDays * 24)*60LL)*60LL)*1000LL); } return timeMillis; } int getPassedDaysSinceBeginningOfCurrentYear(SYSTEMTIME *timeInfo) { BOOL isLeapYear = ((*timeInfo).wYear) % 4 == 0; //Escludo l'ultimo mese dal conteggio perchè non potrà mai essere trascorso al momento dal calcolo int daysPerMonth[12] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30}; //Oggi non è trascorso int days = (isLeapYear && ((*timeInfo).wMonth) > 2)? ((*timeInfo).wDay) : ((*timeInfo).wDay) - 1; int i; for (i = 0; i < ((*timeInfo).wMonth); i++) { days += daysPerMonth[i]; } return days; } int getDaysCountFromYearToYear(unsigned int startYear, unsigned int endYear) { int leapYears = 0; int normalYears = 0; if (startYear <= endYear) { while (startYear <= endYear) { if (!(startYear % 400 == 0 || (startYear % 4 == 0 && startYear % 100 != 0))) { normalYears++; } else { leapYears++; } startYear++; } } return (normalYears * 365) + (leapYears * 366); }
Grazie a tutti per i vostri aiuti
Ultima modifica effettuata da robrock80 21/03/10 20:09
aaa