Ok, ho studiato un pò la <ctime> ed ho scritto questo piccolo codice che nin funziona come mi aspettavo:

codice:
#include <windows.h>
#include <ctime>
#include <cstdlib>
#include <iostream>

int main()
{
	time_t start = time(NULL);
	{
		struct tm timeinfo;
		memset(&timeinfo, 0, sizeof(timeinfo));

		localtime_s(&timeinfo, &start);

		char szTime[30] = {0};
		strftime(szTime, 30, "%X", &timeinfo);
		std::cout << "Start: " << szTime << std::endl;
	}

	Sleep(2000);

	time_t end = time(NULL);
	{
		struct tm timeinfo;
		memset(&timeinfo, 0, sizeof(timeinfo));

		time_t dif = (time_t)difftime(end, start);

		localtime_s(&timeinfo, &dif);

		char szTime[30] = {0};
		strftime(szTime, 30, "%X", &timeinfo);
		std::cout << "End, time elapsed is: " << szTime << std::endl;
	}

	system("pause");
	return EXIT_SUCCESS;
}
In pratica passano 2 secondi tra il primo blocco ed il secondo, ma il time elapsed indica 01:00:02 ovvero un'ora e due secondi...dov'è che sbaglio? inoltre sono stato costretto a fare il cast in: time_t dif = (time_t)difftime(end, start); perchè la funziona ritorna solo double...ho fatto bene?

grazie