-startOfDay :: DateTime -> DateTime
-startOfDay = fromJust . parseDateTime "%x" . formatDateTime "%x"
+parseRFC822Time :: String -> ZonedTime
+parseRFC822Time = parseToZonedTime rfc822DateFormat
+
+formatZonedTime :: String -> ZonedTime -> String
+formatZonedTime format = formatTime defaultTimeLocale format
+
+zonedTimesDeltas :: ZonedTime -> [ZonedTime] -> [Integer]
+zonedTimesDeltas startTime timestamps =
+ let
+ startTimeUTC = zonedTimeToUTC startTime
+ relevantTimestamps = dropWhile (< startTimeUTC) $ map zonedTimeToUTC timestamps
+ in
+ zipWith diffSeconds relevantTimestamps $ startTimeUTC : init relevantTimestamps
+
+startOfZonedDay :: ZonedTime -> ZonedTime
+startOfZonedDay time = ZonedTime (LocalTime day midnight) $ zonedTimeZone time
+ where
+ day = localDay $ zonedTimeToLocalTime time