Find the number of minutes in a HH:MM:SS time string

From CodeCodex

Revision as of 13:54, 16 January 2008 by 195.22.66.194 (Talk)

Implementations

Java

	/**
	 * Turns a period of time into the number of minutes represented
         * (eg. 06:30:15 returns 360.25)
	 * @param hourFormat The string containing the hour format "HH:MM:SS"
	 * @return The number of minutes represented, or -1 if the date could not be processed.
	 */
	public static double parseTimeToMinutes(String hourFormat) {
		
		double minutes = 0;
		String[] split = hourFormat.split(":");
		
		try {
			
			minutes += Double.valueOf(split[0])*60;
			minutes += Double.valueOf(split[1]);
			minutes += Double.valueOf(split[2])/60;
			return minutes;
		
		} catch (Exception e) {
			return -1;
		}
		
	}

Haskell

<highlightsyntax language="haskell"> import Text.Regex

timeToMinutes :: String -> Double timeToMinutes time_str

 = hours * 60 + minutes + seconds /60
   where [hours, minutes, seconds] = map read $ splitRegex (mkRegex ":") time_str

</highlightsyntax>


Below is the same solution in pointfree style while also reusing some more standard functions.

<highlightsyntax language="haskell"> import Text.Regex

ttm :: String -> Double ttm = sum . zipWith ($) [(*60), id, (/60)] . map read . (splitRegex . mkRegex) ":" </highlightsyntax>

Ruby

def time_to_minutes(time_str)
    split_str = time_str.split(":")
    return (split_str[0].to_f * 60) + (split_str[1].to_f) + (split_str[2].to_f / 60)
  rescue Exception => e
    # do any additional error handling here
    return -1
end

Python

<HIGHLIGHTSYNTAX language="python"> def time_to_minutes(time_str):

   try:
       hours, minutes, seconds = time_str.split(':')
   except ValueError:
       return -1
   return int(hours)*60 + int(minutes) + int(seconds)/60.0

</HIGHLIGHTSYNTAX>