All pastes #966074 Raw Edit

Something

public text v1 · immutable
·published 2008-04-01 13:43 UTC
rendered paste body
#include <stdio.h>
#include <windows.h>
#include <time.h>

bool GetDateParts(char *szDate, int *lpnDateParts);
int DaysSinceYearStart(int nMonth);

void main(void)
{

	char szTimeStart[] = "26-12-2007";		// dd-mm-yyyy
	char szTimeEnd[] = "26-12-2008";
	int lpnDateStart[3];					// 0 day 1 mon 2 year
	int lpnDateEnd[3];

	double dblstart, dblend;

	GetDateParts(szTimeStart, lpnDateStart);
	GetDateParts(szTimeEnd, lpnDateEnd);

	// sec in day = 86400
	// sec in month = ndays * 86400
	// sec in year = 365.25 * 86400 = 7464960000
	int nModYear = lpnDateStart[2] > lpnDateEnd[2] ? lpnDateEnd[2] : lpnDateStart[2];

	// normalize year so we don't have some huge amount of seconds
	lpnDateStart[2] -= nModYear;
	lpnDateEnd[2] -= nModYear;

	// transform both dates into a numeric timestamp
	dblstart = (double)lpnDateStart[2] * 7464960000.0000;
	dblstart += (double)DaysSinceYearStart(lpnDateStart[1]) * 86400.0000;
	dblstart += (double)lpnDateStart[0] * 86400.0000;

	dblend = (double)lpnDateEnd[2] * 7464960000.0000;
	dblend += (double)DaysSinceYearStart(lpnDateEnd[1]) * 86400.0000;
	dblend += (double)lpnDateEnd[0] * 86400.0000;

	// calc diff
	double dbldiff = dblend > dblstart ? dblend-dblstart : dblstart-dblend;

	printf("Diff between dates is %0.00f sec.\n", dbldiff);

	
}

int DaysSinceYearStart(int nMonth)
{
	int nDays[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
	int nCnt = 0;

	// sum up days occured since start of year (not including curr month)
	for (int i = 0; i < (nMonth - 1); i++)
		nCnt += nDays[i];

	return nCnt;
}


bool GetDateParts(char *szDate, int *lpnDateParts)
{
	char *szToken = strtok(szDate, "-");	// seperate szTime by -

	if (szToken == NULL)
		return false;
	lpnDateParts[0] = atoi(szToken);		// get day
	szToken = strtok(NULL, "-");	
	if (szToken == NULL)
		return false;
	lpnDateParts[1] = atoi(szToken);		// get month
	szToken = strtok(NULL, "-");
	if (szToken == NULL)
		return false;
	lpnDateParts[2] = atoi(szToken);		// get day
	
	return true;
}