X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=HMSTime.hs;h=ce4e3b26f8a8776adb605be052d5d99ddf7e4eb9;hb=1e3285599922c3b6ec009ac641464f3232d59bb8;hp=cbe9e0914d752ac9b6ff62b416a39d646bfe75da;hpb=62ba998ef05a79c1fd60386f7ec8dbef49f8a78f;p=user%2Fhenk%2Fcode%2Fhaskell%2Fdiddohs.git diff --git a/HMSTime.hs b/HMSTime.hs index cbe9e09..ce4e3b2 100644 --- a/HMSTime.hs +++ b/HMSTime.hs @@ -1,33 +1,13 @@ module HMSTime -( HMSTime(HMSTime, hours, minutes, seconds) -, secondsToHMS -, hmsTimeStringToHMSTime -, hmsTimeStringToSeconds +( diffTimeToHMSString ) where +import Data.Time.Clock( NominalDiffTime() ) import Text.Printf( printf ) -import Data.List.Split( splitOn ) -data HMSTime = HMSTime { hours :: Integer, minutes :: Integer, seconds :: Integer } - -instance Show HMSTime where - show (HMSTime h m s) = printf "%d:%02d:%02d" h m s - -secondsToHMS :: Integer -> HMSTime -secondsToHMS numSeconds = HMSTime h m s where - (mLeft, s) = numSeconds `divMod` 60 - (h, m) = mLeft `divMod` 60 - -hmsTimeStringToHMSTime :: String -> HMSTime -hmsTimeStringToHMSTime hmsString = HMSTime h m s where - h:m:s:_ = map readInteger $ splitOn ":" hmsString - -hmsTimeToSeconds :: HMSTime -> Integer -hmsTimeToSeconds (HMSTime {hours = h, minutes = m, seconds = s}) = h*3600 + m*60 + s - -hmsTimeStringToSeconds :: String -> Integer -hmsTimeStringToSeconds = hmsTimeToSeconds . hmsTimeStringToHMSTime - -readInteger :: String -> Integer -readInteger x = read x :: Integer +diffTimeToHMSString :: NominalDiffTime -> String +diffTimeToHMSString delta = printf "%d:%02d:%02d" h m s + where + (mLeft, s) = floor delta `divMod` 60 :: (Int, Int) + (h, m) = mLeft `divMod` 60