diff --git a/Tools/SPlotMain.hs b/Tools/SPlotMain.hs
--- a/Tools/SPlotMain.hs
+++ b/Tools/SPlotMain.hs
@@ -21,6 +21,7 @@
 
 import qualified Data.ByteString.Char8 as S
 import qualified Data.ByteString.Lazy.Char8 as B
+import Data.ByteString.Lex.Lazy.Double
 
 import Control.Monad (when)
 
@@ -50,7 +51,10 @@
     "  -tf           - time format, as in http://linux.die.net/man/3/strptime but with ",
     "                  fractional seconds supported via %OS - will parse 12.4039 or 12,4039",
     "                  Also, %^[+-][N]s will parse seconds since the epoch, for example ",
-    "                  %^-3s are milliseconds since the epoch (N can only be 1 digit)",
+    "                  %^-3s are milliseconds since the epoch (N can only be 1 digit).",
+    "                  Or: -tf elapsed, in which case times are fractional seconds elapsed",
+    "                  since an unknown point in time.",
+    "                  Default: %Y-%m-%d %H:%M:%OS.",
     "  -tickInterval - ticks on the X axis will be this often (in millis, default 1000).",
     "  -largeTickFreq N - every N'th tick will be larger than the others (default 10).",
     "  -expire       - expire activities after given time period (in millis) - for instance,",
@@ -111,21 +115,29 @@
     Just (hash,True)  -> hash ++ " (with local modifications)"
     Just (hash,False) -> hash)
 
+addSeconds d t = utcToLocalTime utc (addUTCTime (fromRational $ toRational d) (localTimeToUTC utc t))
+
 main = do
   args <- getArgs
   when (null args || args == ["--help"]) $ showHelp >> exitSuccess
   when (null args || args == ["--version"]) $ do
-    putStrLn ("This is timeplot-" ++ showVersion version ++ " (git " ++ showGitVersion ++ ")") >> exitSuccess
+    putStrLn ("This is splot-" ++ showVersion version ++ " (git " ++ showGitVersion ++ ")") >> exitSuccess
 
   let (w,h) = (read $ getArg "w" "640" args, read $ getArg "h" "480" args)
   let barHeight = case getArg "bh" "fill" args of { "fill" -> BarHeightFill ; bh -> BarHeightFixed $ read bh }
   let tickIntervalMs = read $ getArg "tickInterval" "1000" args
   let largeTickFreq = read $ getArg "largeTickFreq" "10" args
   let timeFormat = getArg "tf" "%Y-%m-%d %H:%M:%OS" args
-  let ptime = strptime (B.pack timeFormat)
+  let Just (ourBaseTime,_) = strptime "%Y-%m-%d %H:%M:%OS" "1900-01-01 00:00:00" 
+  let ourStrptime = if timeFormat == "elapsed" 
+                    then \s -> do
+                      (d, s') <- readDouble s
+                      return (addSeconds d ourBaseTime, s')
+                    else strptime (B.pack timeFormat)
+  let ptime = ourStrptime
   let parseTime s = fromMaybe (error $ "Invalid time: " ++ show s) . ptime $ s
-  let fromTime = fst `fmap` (strptime timeFormat $ getArg "fromTime" "" args)
-  let toTime = fst `fmap` (strptime timeFormat $ getArg "toTime" "" args)
+  let fromTime = fst `fmap` (ptime $ B.pack $ getArg "fromTime" "" args)
+  let toTime = fst `fmap` (ptime $ B.pack $ getArg "toTime" "" args)
   let forcedNumTracks = case getArg "numTracks" "" args of { "" -> Nothing ; n -> Just $ read n }
   let outPNG = getArg "o" "" args
   let inputFile = getArg "if" (error "Input file not specified") args
diff --git a/splot.cabal b/splot.cabal
--- a/splot.cabal
+++ b/splot.cabal
@@ -1,5 +1,5 @@
 Name: splot
-Version: 0.3.4
+Version: 0.3.5
 License: BSD3
 License-file: LICENSE
 Copyright: Eugene Kirpichov, 2010
