hora 1.0.1 → 1.0.2
raw patch · 8 files changed
+62/−15 lines, 8 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Data.Time.Hora.Future: timeDiffMs :: UTCTime -> UTCTime -> Int
+ Data.Time.Hora.Future: (-) :: PicoDiff a => a -> a -> TimeSpan Integer
+ Data.Time.Hora.Future: class PicoDiff a
+ Data.Time.Hora.Future: instance Data.Time.Hora.Future.PicoDiff Data.Fixed.Pico
+ Data.Time.Hora.Future: instance Data.Time.Hora.Future.PicoDiff Data.Time.Clock.UTC.UTCTime
+ Data.Time.Hora.Type.Time: instance GHC.Base.Functor Data.Time.Hora.Type.Time.Tz
Files
- changelog.md +7/−1
- hora.cabal +5/−2
- src/Data/Time/Hora/Future.hs +20/−8
- src/Data/Time/Hora/Type/Time.hs +1/−2
- test/Main.hs +3/−0
- test/Test/TestDiffTime.hs +2/−2
- test/Test/TestPico.hs +9/−0
- test/Test/TestPico2.hs +15/−0
changelog.md view
@@ -1,6 +1,12 @@+##### 1.0.2+ Tz derive Functor+ + Data.Time.Hora.Future :++ PicoDiff class+ ##### 1.0.1 DmyHmp derive Binary- ##### 1.0 initial version
hora.cabal view
@@ -1,5 +1,5 @@ name: hora-version: 1.0.1+version: 1.0.2 build-type: Simple cabal-version: >=1.10 @@ -53,8 +53,9 @@ GeneralizedNewtypeDeriving RecordWildCards DeriveGeneric- + DeriveFunctor + test-suite spec default-language:Haskell2010 type: exitcode-stdio-1.0@@ -73,6 +74,7 @@ GeneralizedNewtypeDeriving RecordWildCards DeriveGeneric+ DeriveFunctor main-is: Main.hs other-modules:@@ -82,6 +84,7 @@ Test.TestTime Test.TestDmyHm Test.TestPico+ Test.TestPico2 build-depends: base >= 4.8, hspec >= 2.1.7,
src/Data/Time/Hora/Future.hs view
@@ -3,6 +3,8 @@ import Data.Time.Clock import Data.Time.Hora.Type.Time import Data.Time.Hora.Convert+import Prelude as P+import Data.Fixed {- | 'getCurrentTime' +/- offset@@ -23,12 +25,22 @@ pure . (addUTCTime diff1) where diff1 = nominalDiff ts0 +{- | Difference between times with pico precision+ + return TimeSpan for ease of conversion with "Data.Time.Hora.Convert" -}+class PicoDiff a where+ (-)::a -> a -> TimeSpan Integer --- | time diff in milli-timeDiffMs::UTCTime -> UTCTime -> Int-timeDiffMs t1 t2 =- let t1_ = utctDayTime t1- t2_ = utctDayTime t2- d3 = diffTimeToPicoseconds $ t2_ - t1_- in toMilli $ Pico d3- ++instance PicoDiff UTCTime where+ (-) t2 t1 =+ let t1_ = utctDayTime t1+ t2_ = utctDayTime t2+ d3 = diffTimeToPicoseconds $ t2_ P.- t1_+ in Pico d3+-- ^ assuming both times are in the same date. Day part is discarded + ++instance PicoDiff Pico where+ (-) (MkFixed t2) (MkFixed t1) = Pico $ t2 P.- t1+-- ^ e.g. Pico part in 'DmyHmp'
src/Data/Time/Hora/Type/Time.hs view
@@ -8,8 +8,7 @@ | Milli a deriving (Show, Eq, Ord) -data Tz a = Tz TimeZone a deriving Show-+data Tz a = Tz TimeZone a deriving (Show,Functor) -- | constraint type TwoInt a b = (Integral a, Integral b)
test/Main.hs view
@@ -5,8 +5,10 @@ import qualified Test.TestFuture as Fut import qualified Test.TestTime as Tt import qualified Test.TestPico as P+import qualified Test.TestPico2 as P2 import qualified Test.TestDmyHm as D + main::IO() main = do T.main@@ -15,3 +17,4 @@ Tt.main P.main D.main+ P2.main
test/Test/TestDiffTime.hs view
@@ -5,7 +5,7 @@ import Data.Time.Clock import Control.Concurrent import Data.Time.Hora.Timestamp-import Data.Time.Hora.Future+import Data.Time.Hora.Future as F import Data.Time.Hora.Type.Time @@ -17,7 +17,7 @@ t1 <- getCurrentTime threadDelay 7000 t2 <- getCurrentTime- let diff3 = timeDiffMs t1 t2+ let diff3 = t1 F.- t2 traceIO $ show diff3 1 `shouldBe` 1 it "DmyHmP" $ do
test/Test/TestPico.hs view
@@ -3,6 +3,7 @@ import Test.Hspec import Debug.Trace import Data.Time.Hora.Parse+import Data.Time.Hora.Future as F import Data.Time.Clock import Data.Time.Hora.Type.DmyHm import Data.Time.LocalTime@@ -27,4 +28,12 @@ let f1 = parse' z1 t1 traceIO $ show f1 1 `shouldBe` 1+ it "- pico" $ do+ t1 <- getCurrentTime + t2 <- getCurrentTime+ let DmyHmp (_,d1) = parse t1::DmyHmp+ DmyHmp (_,d2) = parse t2::DmyHmp+ diff1 = t2 F.- t1+ diff2 = d2 F.- d1 + diff1 `shouldBe` diff2
+ test/Test/TestPico2.hs view
@@ -0,0 +1,15 @@+module Test.TestPico2 where++import Test.Hspec+import Debug.Trace+import Data.Fixed+++main::IO()+main = hspec $ do+ describe "Test.TestPico2" $ do+ it "case 1" $ do+ traceIO $ show p1+ let MkFixed p2 = p1+ p2 `shouldBe` 33458700000000+ where p1 = MkFixed 33458700000000::Fixed E12