Convert Seconds to Duration

Description: Converts a given number of seconds (limited to unsigned long values) into the number of years, days, hours, minutes and remaining seconds. It assumes that seconds is always positive.
Tested Platform: Visual Studio 2010, 32-bit, Windows 7
Language: C/C++
// Duration structure which will hold our time
struct Duration {
	unsigned long years;
	int days;
	int hours;
	int minutes;
	int seconds;

	Duration(): years(0), days(0), hours(0), minutes(0), seconds(0) { }
};


// Function that converts seconds into our duration time
// Supports up to 4,294,967,295 seconds on a 32-bit machine
// Limited by unsigned long size.
Duration GetDuration(unsigned long seconds) {
	Duration timeDuration;

	// Seconds in a year
	timeDuration.years = seconds / 31557600;
	seconds %= 31557600;

	// Seconds in a day
	timeDuration.days = seconds / 86400;
	seconds %= 86400;

	// Seconds in a hour
	timeDuration.hours = seconds / 3600;
	seconds %= 3600;

	// Seconds in a minute
	timeDuration.minutes = seconds / 60;
	seconds %= 60;

	// Rest is seconds
	timeDuration.seconds = seconds;

	return timeDuration;
}

// Typical use
Duration songDuration = GetDuration(353);

// Print number of minutes
cout << songDuration.Minutes << endl;

Submitted: January 06, 2013

Return to the snippets listing