packages feed

hora 1.0.3 → 1.1

raw patch · 17 files changed

+241/−290 lines, 17 filesdep −regex-doPVP ok

version bump matches the API change (PVP)

Dependencies removed: regex-do

API changes (from Hackage documentation)

- Data.Time.Hora.Format: hmsFraction :: String
- Data.Time.Hora.Format: hmsFraction' :: String
- Data.Time.Hora.Format: partFormats :: DmyHm String
- Data.Time.Hora.Format: spicoFormat :: String
- Data.Time.Hora.Format: ymdHms :: String
- Data.Time.Hora.Parse: class Parse out
- Data.Time.Hora.Parse: instance Data.Time.Hora.Parse.Parse Data.Time.Hora.Type.DmyHm.DmyHmp
- Data.Time.Hora.Parse: instance Data.Time.Hora.Parse.Parse Data.Time.Hora.Type.DmyHm.DmyHmp'
- Data.Time.Hora.Timestamp: t' :: IO String
- Data.Time.Hora.Type.DmyHm: DmyHm :: a -> a -> a -> a -> a -> DmyHm a
- Data.Time.Hora.Type.DmyHm: DmyHmp :: (DmyHm Int, Pico) -> DmyHmp
- Data.Time.Hora.Type.DmyHm: [day] :: DmyHm a -> a
- Data.Time.Hora.Type.DmyHm: [hour] :: DmyHm a -> a
- Data.Time.Hora.Type.DmyHm: [minute] :: DmyHm a -> a
- Data.Time.Hora.Type.DmyHm: [month] :: DmyHm a -> a
- Data.Time.Hora.Type.DmyHm: [year] :: DmyHm a -> a
- Data.Time.Hora.Type.DmyHm: data DmyHm a
- Data.Time.Hora.Type.DmyHm: instance Data.Binary.Class.Binary (Data.Time.Hora.Type.DmyHm.DmyHm GHC.Types.Int)
- Data.Time.Hora.Type.DmyHm: instance Data.Binary.Class.Binary Data.Time.Hora.Type.DmyHm.DmyHmp
- Data.Time.Hora.Type.DmyHm: instance GHC.Base.Functor Data.Time.Hora.Type.DmyHm.DmyHm
- Data.Time.Hora.Type.DmyHm: instance GHC.Classes.Eq Data.Time.Hora.Type.DmyHm.DmyHmp
- Data.Time.Hora.Type.DmyHm: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Time.Hora.Type.DmyHm.DmyHm a)
- Data.Time.Hora.Type.DmyHm: instance GHC.Classes.Ord (Data.Time.Hora.Type.DmyHm.DmyHm GHC.Types.Int)
- Data.Time.Hora.Type.DmyHm: instance GHC.Classes.Ord Data.Time.Hora.Type.DmyHm.DmyHmp
- Data.Time.Hora.Type.DmyHm: instance GHC.Generics.Generic (Data.Time.Hora.Type.DmyHm.DmyHm GHC.Types.Int)
- Data.Time.Hora.Type.DmyHm: instance GHC.Generics.Generic Data.Time.Hora.Type.DmyHm.DmyHmp
- Data.Time.Hora.Type.DmyHm: instance GHC.Show.Show Data.Time.Hora.Type.DmyHm.DmyHmp
- Data.Time.Hora.Type.DmyHm: instance GHC.Show.Show a => GHC.Show.Show (Data.Time.Hora.Type.DmyHm.DmyHm a)
- Data.Time.Hora.Type.DmyHm: newtype DmyHmp
- Data.Time.Hora.Type.DmyHm: pico2second :: DmyHmp -> YmdHms
- Data.Time.Hora.Type.DmyHm: type DmyHmp' = (DmyHm String, String)
- Data.Time.Hora.Type.YmdHms: YmdHms :: Int -> Int -> Int -> Int -> Int -> Int -> YmdHms
- Data.Time.Hora.Type.YmdHms: [day] :: YmdHms -> Int
- Data.Time.Hora.Type.YmdHms: [hour] :: YmdHms -> Int
- Data.Time.Hora.Type.YmdHms: [minute] :: YmdHms -> Int
- Data.Time.Hora.Type.YmdHms: [month] :: YmdHms -> Int
- Data.Time.Hora.Type.YmdHms: [second] :: YmdHms -> Int
- Data.Time.Hora.Type.YmdHms: [year] :: YmdHms -> Int
- Data.Time.Hora.Type.YmdHms: data YmdHms
- Data.Time.Hora.Type.YmdHms: instance GHC.Classes.Eq Data.Time.Hora.Type.YmdHms.YmdHms
- Data.Time.Hora.Type.YmdHms: instance GHC.Classes.Ord Data.Time.Hora.Type.YmdHms.YmdHms
- Data.Time.Hora.Type.YmdHms: instance GHC.Show.Show Data.Time.Hora.Type.YmdHms.YmdHms
+ Data.Time.Hora.Convert: picoTimeSpan :: Num a => Pico -> TimeSpan a
+ Data.Time.Hora.Convert: timeSpanPico :: Integral a => TimeSpan a -> Pico
+ Data.Time.Hora.Format: iso :: UTCTime -> String
+ Data.Time.Hora.Format: iso' :: TimeZone -> UTCTime -> Tz String
+ Data.Time.Hora.Format: ymd' :: TimeZone -> UTCTime -> Tz String
+ Data.Time.Hora.Timestamp: d' :: IO (Tz String)
+ Data.Time.Hora.Timestamp: now' :: IO (Tz (DatePart Int))
+ Data.Time.Hora.Timestamp: tf :: IO String
+ Data.Time.Hora.Type.DatePart: DatePart :: a -> a -> a -> a -> a -> a -> a -> DatePart a
+ Data.Time.Hora.Type.DatePart: [day] :: DatePart a -> a
+ Data.Time.Hora.Type.DatePart: [hour] :: DatePart a -> a
+ Data.Time.Hora.Type.DatePart: [minute] :: DatePart a -> a
+ Data.Time.Hora.Type.DatePart: [month] :: DatePart a -> a
+ Data.Time.Hora.Type.DatePart: [pico] :: DatePart a -> a
+ Data.Time.Hora.Type.DatePart: [second] :: DatePart a -> a
+ Data.Time.Hora.Type.DatePart: [year] :: DatePart a -> a
+ Data.Time.Hora.Type.DatePart: data DatePart a
+ Data.Time.Hora.Type.DatePart: instance Data.Binary.Class.Binary (Data.Time.Hora.Type.DatePart.DatePart GHC.Base.String)
+ Data.Time.Hora.Type.DatePart: instance Data.Binary.Class.Binary (Data.Time.Hora.Type.DatePart.DatePart GHC.Types.Int)
+ Data.Time.Hora.Type.DatePart: instance GHC.Base.Functor Data.Time.Hora.Type.DatePart.DatePart
+ Data.Time.Hora.Type.DatePart: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Time.Hora.Type.DatePart.DatePart a)
+ Data.Time.Hora.Type.DatePart: instance GHC.Classes.Ord (Data.Time.Hora.Type.DatePart.DatePart GHC.Types.Int)
+ Data.Time.Hora.Type.DatePart: instance GHC.Generics.Generic (Data.Time.Hora.Type.DatePart.DatePart a)
+ Data.Time.Hora.Type.DatePart: instance GHC.Show.Show a => GHC.Show.Show (Data.Time.Hora.Type.DatePart.DatePart a)
- Data.Time.Hora.Format: ymd :: TimeZone -> UTCTime -> Tz String
+ Data.Time.Hora.Format: ymd :: UTCTime -> String
- Data.Time.Hora.Parse: parse :: Parse out => UTCTime -> out
+ Data.Time.Hora.Parse: parse :: Num a => UTCTime -> DatePart a
- Data.Time.Hora.Parse: parse' :: TimeZone -> UTCTime -> Tz DmyHmp
+ Data.Time.Hora.Parse: parse' :: Num a => TimeZone -> UTCTime -> Tz (DatePart a)
- Data.Time.Hora.Timestamp: d :: IO (Tz String)
+ Data.Time.Hora.Timestamp: d :: IO String
- Data.Time.Hora.Timestamp: now :: IO (Tz DmyHmp)
+ Data.Time.Hora.Timestamp: now :: IO (DatePart Int)

Files

changelog.md view
@@ -1,3 +1,8 @@+#####   1.1+    API overhaul+    +    remove dep on regex-do + #####   1.0.3     fix Eq, Ord TimeSpan: was derived. Implemented manually     
hora.cabal view
@@ -1,5 +1,5 @@ name:                hora-version:             1.0.3+version:             1.1 build-type:          Simple cabal-version:       >=1.10 @@ -23,19 +23,16 @@           Data.Time.Hora.Convert           Data.Time.Hora.Future           Data.Time.Hora.Timestamp-          Data.Time.Hora.Type.YmdHms-          Data.Time.Hora.Type.DmyHm+          Data.Time.Hora.Type.DatePart           Data.Time.Hora.Type.Time           Data.Time.Hora.Parse           Data.Time.Hora.Format    other-modules:            -          Data.Time.Hora.WithTimeZone   ghc-options:  -fwarn-unused-imports          build-depends:       base >=4.7 && <5.0,                        time,-                       regex-do >= 3.1,                         binary                           hs-source-dirs:      src@@ -90,5 +87,4 @@                   hspec >= 2.1.7,                   QuickCheck >= 2.8.1,                   time,-                  regex-do >= 3.1,                   binary                          
src/Data/Time/Hora/Convert.hs view
@@ -1,20 +1,24 @@ module Data.Time.Hora.Convert -    (-- ** multipliers-    picoSec,-    picoMs,-    msSec,-    -- ** conversion+    (-- ** 'TimeSpan'     toPico,     toMilli,     toSec,+    -- ** 'Pico' - 'TimeSpan' conversion+    picoTimeSpan,+    timeSpanPico,     -- ** diff time     toDiffTime,-    nominalDiff        +    nominalDiff,+    -- ** multipliers+    picoSec,+    picoMs,+    msSec             ) where  import Data.Ratio import Data.Time.Clock import Data.Time.Hora.Type.Time+import Data.Fixed   -- | pico in 1 second@@ -29,21 +33,22 @@ msSec::Integral a => a msSec = 1000 -{- | >>> toPico (Milli 1) -    1000000000 -}+{- | >>> toPico $ Milli 3+3000000000  -} toPico::TwoInt a b => TimeSpan a -> b toPico (Pico i0) = fromIntegral i0 toPico (Milli i0) = fromIntegral $ i0 * picoMs toPico (Sec i0) = fromIntegral $ i0 * picoSec -{- | >>> toMilli (Sec 1)-    1000    -}+{- | >>> toMilli $ Sec 5+5000   -} toMilli::TwoInt a b => TimeSpan a -> b toMilli (Pico i0) = fromIntegral $ i0 `div` picoMs toMilli (Milli i0) = fromIntegral $ i0 toMilli (Sec i0) = fromIntegral $ i0 * msSec -+{- | >>> toSec $ Milli 781200+781     -} toSec::TwoInt a b => TimeSpan a -> b toSec (Pico i0) = fromIntegral $ i0 `div` picoSec toSec (Milli i0) = fromIntegral $ i0 `div` msSec@@ -60,3 +65,12 @@ nominalDiff ts0 = let s1 = toPico ts0::Integer                 in fromRational $ s1 % picoSec +++picoTimeSpan::Num a => Pico -> TimeSpan a+picoTimeSpan (MkFixed p0) = Pico $ fromIntegral p0+++timeSpanPico::Integral a => TimeSpan a -> Pico +timeSpanPico ts0 = MkFixed $ fromIntegral p0+        where p0 = toPico ts0  
src/Data/Time/Hora/Format.hs view
@@ -2,82 +2,42 @@  import Data.Time.Format (formatTime,defaultTimeLocale) import Data.Time.Clock-import Data.Time.Hora.Type.DmyHm as M import Data.Time.LocalTime as L-import qualified Text.Regex.Do.Replace.Template as F-import qualified Text.Regex.Do.Pad as F import Data.Time.Calendar import Data.Time.Hora.Type.Time+import Text.Printf  -{- | yyyymmdd      -}-ymd::TimeZone -> UTCTime -> Tz String-ymd tz0 utc0 =+{- | yyyy-mm-dd   UTC   -}+iso::UTCTime -> String+iso t0 = showGregorian $ utctDay t0+++{- | yyyy-mm-dd local  -}+iso'::TimeZone -> UTCTime -> Tz String+iso' tz0 utc0 =     let lt2 = L.utcToLocalTime tz0 utc0         day2 = localDay lt2         (y3,m3,d3) = toGregorian day2-        f4 i4 = F.pad '0' 2 $ show i4-    in Tz tz0 $ "{0}{1}{2}" F.< (f4 <$> [fromIntegral y3,m3,d3])-    +    in Tz tz0 $ printf "%04v-%02v-%02v" y3 m3 d3 -{- | format UTCTime just as you need it. uses 'defaultTimeLocale'  -@-import Text.Regex.Do.Replace.Template -import Prelude hiding ((\<),(\>))-...+{- | yyyymmdd   UTC   -}+ymd::UTCTime -> String+ymd utc0 = formatTime defaultTimeLocale "%Y%m%d" utc0  -it "formatUTCTime" $ do-    t1 <- getCurrentTime -    let p1@DmyHm{..} = partFormats-    traceIO $ formatUTCTime (("{day}/{month} {hour}:{minute}") < -                    [("day",day),("month",month),("hour",hour),("minute",minute)])-                    t1 -12/12 18:39                      -@   -}-formatUTCTime::String  -- ^ see 'formatTime'. can also make format with functions in this module +{- | yyyymmdd  local -}+ymd'::TimeZone -> UTCTime -> Tz String+ymd' tz0 utc0 =+    let lt2 = L.utcToLocalTime tz0 utc0+        day2 = localDay lt2+        (y3,m3,d3) = toGregorian day2+    in Tz tz0 $ printf "%04v%02v%02v" y3 m3 d3+    ++formatUTCTime::String  -- ^ format. see 'formatTime'      -> UTCTime         -> String formatUTCTime format0 = formatTime defaultTimeLocale format0----- | %T%Q-hmsFraction::String-hmsFraction = "%T%Q"---- | %T %Q-hmsFraction'::String-hmsFraction' = "%T %Q"----- | %F %T-ymdHms::String-ymdHms = "%F %T"--{- | %S.%-q     --second.pico         -}-spicoFormat::String-spicoFormat = "%S.%-q"  ----{- | some formats  /no padding/ --    see 'formatTime' for full measure--@-day     %-d-month   %-m-year    %Y-hour    %-H-minute  %-M      @   -}-partFormats::DmyHm String-partFormats = DmyHm {-    M.day = "%-d",-    M.month = "%-m",-    M.year = "%Y",-    M.hour = "%-H",-    M.minute = "%-M"-    }+        
src/Data/Time/Hora/Future.hs view
@@ -43,4 +43,3 @@  instance PicoDiff Pico where     (-) (MkFixed t2) (MkFixed t1) = Pico $ t2 P.- t1--- ^ e.g. Pico part in 'DmyHmp' 
src/Data/Time/Hora/Parse.hs view
@@ -1,47 +1,50 @@ module Data.Time.Hora.Parse where -import Data.Time.Hora.Type.DmyHm as M+import Data.Time.Hora.Type.DatePart as M import Data.Time.Hora.Type.Time import Data.Time.Clock import Data.Time.Calendar import Data.Time.LocalTime as L-import Data.Time.Hora.Format+import Data.Fixed  +{- | UTC -}+parse::Num a => UTCTime -> DatePart a+parse t0 = +    let day1 = utctDay t0::Day+        dt1 = utctDayTime t0::DiffTime+        (y1,m1,d1) = toGregorian day1+        tod1 = timeToTimeOfDay dt1::TimeOfDay+        pico4 = todSec tod1::Fixed E12+        (sec5, MkFixed pico5) = properFraction pico4+    in DatePart {+            year = fromIntegral y1,+            month = fromIntegral m1,+            day = fromIntegral d1,+            hour = fromIntegral $ todHour tod1,+            minute = fromIntegral $ todMin tod1,+            second = fromIntegral sec5,+            pico = fromIntegral pico5+            } -{- | specified time in specified zone, to 'DmyHmP' -}-parse'::TimeZone -> UTCTime -> Tz DmyHmp++{- | specified time zone -}+parse'::Num a => +    TimeZone -> UTCTime -> Tz (DatePart a) parse' tz0 utc0 =     let lt2 = L.utcToLocalTime tz0 utc0         day2 = localDay lt2         time2 = localTimeOfDay lt2         (y3,m3,d3) = toGregorian day2-        d4 = DmyHm{-                     M.year = fromIntegral y3,-                     M.month = m3,-                     M.day = d3,-                     M.hour = todHour time2,-                     M.minute = todMin time2+        d4 = DatePart{+                     year = fromIntegral y3,+                     month = fromIntegral m3,+                     day = fromIntegral d3,+                     hour = fromIntegral $ todHour time2,+                     minute = fromIntegral $ todMin time2,+                     second = fromIntegral sec5,+                     pico = fromIntegral pico5                    }-        pico4 = todSec time2-    in Tz tz0 $ DmyHmp (d4,pico4)---{- | from specified 'UTCTime' -}-class Parse out where-    parse::UTCTime -> out-    -    -instance Parse DmyHmp where-    parse::UTCTime -> DmyHmp-    parse t0 = let (dm1,pico1) = parse t0-            in DmyHmp (read <$> dm1,read pico1)---instance Parse DmyHmp' where-    parse::UTCTime -> DmyHmp'-    parse t1 =-        let dm1 = flip formatUTCTime t1 <$> partFormats-            pico2 = formatUTCTime spicoFormat t1-        in (dm1,pico2)-+        pico4 = todSec time2::Fixed E12+        (sec5, MkFixed pico5) = properFraction pico4+    in Tz tz0 d4        
src/Data/Time/Hora/Timestamp.hs view
@@ -1,76 +1,111 @@ module Data.Time.Hora.Timestamp      (-- ** numerical-    now,+    now, now',     -- ** string-    t,-    t',+    t, tf,     dt,-    d) where+    d, d') where  import Data.Time.Clock-import Data.Time.Hora.WithTimeZone import Data.Time.Hora.Format-import Data.Time.Hora.Type.DmyHm+import Data.Time.Hora.Type.DatePart import Data.Time.Hora.Type.Time import Data.Time.Hora.Parse+import Data.Time.LocalTime as L  -{-| time with Pico in current timezone +{-| UTC   >>> now-Tz CET (DmyHm {day = 12, month = 12, year = 2016, hour = 19, minute = 33},15.546562180000)+DatePart {year = 2016, month = 12, day = 14, hour = 9, minute = 7, second = 10, pico = 233275605000} -}-now::IO (Tz DmyHmp)-now = withTimeZone parse'+now::IO (DatePart Int)+now = withUTCTime parse  +{-| current timezone  -{- | timestamp +>>> now'+Tz CET (DatePart {year = 2016, month = 12, day = 14, hour = 10, minute = 7, second = 26, pico = 498313115000})+-}+now'::IO (Tz (DatePart Int))+now' = withTimeZone parse' -second.fraction. __UTC__ ->>> t-14:41:29.785834836++{- | time.fraction UTC++>>> tf+09:10:58.030311306 -}-t::IO String-t = do+tf::IO String+tf = do       utc0 <- getCurrentTime-      pure $ formatUTCTime hmsFraction utc0+      pure $ formatUTCTime "%T%Q" utc0  -{- | timestamp --second.fraction. __UTC__+{- | time UTC ->>> t'-14:41:29 .785834836+>>> t+09:11:18 -}-t'::IO String-t' = do+t::IO String+t = do       utc0 <- getCurrentTime-      pure $ formatUTCTime hmsFraction' utc0+      pure $ formatUTCTime "%T" utc0  -{- | date, time (to second)  __UTC__+{- | date, time  UTC  >>> dt-2016-12-12 14:43:13+"2016-12-14 09:16:23" -} dt::IO String dt = do       utc0 <- getCurrentTime-      pure $ formatUTCTime ymdHms utc0-+      pure $ formatUTCTime "%F %T" utc0   -{- | date stamp /yyyymmdd/   +{- | date  yyyymmdd    -__local__ timezone+UTC  >>> d-Tz CET "20161212"+"20161214" -}-d::IO (Tz String)-d = withTimeZone ymd+d::IO String+d = withUTCTime ymd ++{- | date yyyymmdd   ++local timezone++>>> d'+Tz CET "20161214"+-}+d'::IO (Tz String)+d' = withTimeZone ymd'++++type WithLocalTimeZone a = TimeZone -> UTCTime -> Tz a+type WithUTCTime a = UTCTime -> a+++{- | do calc with current time zone from 'getCurrentTimeZone'++    probably don't need it+-}+withTimeZone::WithLocalTimeZone a -> IO (Tz a)+withTimeZone fn0 = do+    z1 <- getCurrentTimeZone    --  CET | CEST+    t1 <- getCurrentTime+    pure $ fn0 z1 t1+++withUTCTime::WithUTCTime a -> IO a+withUTCTime fn0 = do+    t1 <- getCurrentTime+    pure $ fn0 t1
+ src/Data/Time/Hora/Type/DatePart.hs view
@@ -0,0 +1,44 @@+module Data.Time.Hora.Type.DatePart where++import GHC.Generics+import Data.Binary+++-- | Date, Time parts+data DatePart a = DatePart {+    year::a,+    month::a,+    day::a,+    hour::a,+    minute::a,+    second::a,+    pico::a     -- ^ excludes seconds. Just fraction as Num    +    } deriving (Show, Eq, Generic)+++instance Functor DatePart where+    fmap f0 d0 = d0 {+            day = f0 (day d0),+            month = f0 (month d0),+            year = f0 (year d0),+            hour = f0 (hour d0),+            minute = f0 (minute d0),+            second = f0 (second d0),+            pico = f0 (pico d0)+        } ++instance Binary (DatePart Int) +instance Binary (DatePart String)+ ++instance Ord (DatePart Int) where+    (<=) a0 b0 = not $  +        year a0 > (year b0)+        || month a0 > (month b0)+        || day a0 > (day b0)+        || hour a0 > (hour b0)+        || minute a0 > (minute b0)+        || second a0 > (second b0)+        || pico a0 > (pico b0)+         +            
− src/Data/Time/Hora/Type/DmyHm.hs
@@ -1,66 +0,0 @@-module Data.Time.Hora.Type.DmyHm where--import GHC.Generics-import Data.Binary-import Data.Fixed-import qualified Data.Time.Hora.Type.YmdHms as S----- | Date, Time w/out second-data DmyHm a = DmyHm {-    day::a,-    month::a,-    year::a,-    hour::a,-    minute::a-    } deriving (Show, Eq)---instance Functor DmyHm where-    fmap f0 d0 = d0 {-            day = f0 (day d0),-            month = f0 (month d0),-            year = f0 (year d0),-            hour = f0 (hour d0),-            minute = f0 (minute d0)-        } ----- | @(DmyHm {day = "12", month = "12", year = "2016", hour = "17", minute = "32"},"59.727280400000")@-type DmyHmp' = (DmyHm String, String)    --  dmyhm----- | @DmyHmp (DmyHm {day = 12, month = 12, year = 2016, hour = 17, minute = 32},59.727482058000)@-newtype DmyHmp = DmyHmp (DmyHm Int, Pico) deriving (Eq, Show, Generic)  --  dmyhm, pico--deriving instance Generic (DmyHm Int)-instance Binary (DmyHm Int)-instance Binary DmyHmp--{- | convert from more precise to more common type -}-pico2second::DmyHmp -> S.YmdHms-pico2second (DmyHmp (r0,pico0)) = S.YmdHms {-    S.year = year r0,-    S.month = month r0,-    S.day = day r0,-    S.hour = hour r0,-    S.minute = minute r0,-    S.second = round pico0-    }-    --instance Ord DmyHmp where-    (<=) (DmyHmp(a1,p1)) (DmyHmp(a2,p2)) = -        if a1 <= a2 then p1 <= p2-        else False---instance Ord (DmyHm Int) where-    (<=) a0 b0 = not $  -        year a0 > (year b0)-        || month a0 > (month b0)-        || day a0 > (day b0)-        || hour a0 > (hour b0)-        || minute a0 > (minute b0)-         -            
src/Data/Time/Hora/Type/Time.hs view
@@ -21,7 +21,11 @@   --- | ! fromInteger returns 'Pico'. assumes the value is Pico seconds+{- | ! fromInteger returns 'Pico'. assumes the value is Pico seconds++>>> Milli 397100 + (Sec 2) + 37891470000+Pico 399137891470000+-} instance Integral a => Num (TimeSpan a) where     (+) = withPico (+)     (*) = withPico (*)@@ -33,8 +37,11 @@     fromInteger i0 = Pico $ fromIntegral i0     (-) = withPico (-) +{- | safe to mix sec \/ pico \/ milli --- | safe to mix sec \/ pico \/ milli +>>> Sec 1 == Milli 1000+True+-}  instance (Eq a, Integral a) => Eq (TimeSpan a) where     (==) (Sec a0) (Sec b0) = a0 == b0     (==) (Milli a0) (Milli b0) = a0 == b0@@ -44,7 +51,10 @@               b1 = toPico b0::Integer  --- | safe to mix sec \/ pico \/ milli +{- | safe to mix sec \/ pico \/ milli++>>> Sec 1 > Milli 500+True        -}  instance (Ord a, Integral a) => Ord (TimeSpan a) where     (<=) (Sec a0) (Sec b0) = a0 <= b0     (<=) (Milli a0) (Milli b0) = a0 <= b0
− src/Data/Time/Hora/Type/YmdHms.hs
@@ -1,22 +0,0 @@-module Data.Time.Hora.Type.YmdHms where---data YmdHms = YmdHms {-    year::Int,-    month::Int,-    day::Int,-    hour::Int,-    minute::Int,-    second::Int-    } deriving (Show,Eq)---instance Ord YmdHms where-    (<=) a0 b0 = not $-        year a0 > (year b0)-        || month a0 > (month b0)-        || day a0 > (day b0)-        || hour a0 > (hour b0)-        || minute a0 > (minute b0)-        || second a0 > (second b0)-             
− src/Data/Time/Hora/WithTimeZone.hs
@@ -1,18 +0,0 @@-module Data.Time.Hora.WithTimeZone where--import Data.Time.Clock-import Data.Time.LocalTime as L-import Data.Time.Hora.Type.Time---type WithTimeZone a = TimeZone -> UTCTime -> Tz a--{- | do calc with current time zone from 'getCurrentTimeZone'--    probably don't need it--}-withTimeZone::WithTimeZone a -> IO (Tz a)-withTimeZone fn0 = do-    z1 <- getCurrentTimeZone    --  CET | CEST-    t1 <- getCurrentTime-    pure $ fn0 z1 t1
test/Test/TestConvert.hs view
@@ -4,8 +4,6 @@ import Data.Time.Hora.Type.Time import Data.Time.Hora.Convert import Data.Time.Clock-import Data.Time.Hora.Type.DmyHm as D-import Data.Time.Hora.Type.YmdHms as Y   main::IO()@@ -47,8 +45,6 @@         it "toPicos sec" $  toPico (Sec 1) `shouldBe` 1000000000000         it "toMillis sec" $  toMilli (Sec 1) `shouldBe` 1000         it "toDiffTime sec" $  toDiffTime (Sec 1) `shouldBe` (secondsToDiffTime 1)-        it "pico2second" $ pico2second (DmyHmp (DmyHm {D.day = 3, D.month = 4, D.year = 2016, D.hour = 10, D.minute = 31}, 21.2589))-                `shouldBe` YmdHms { Y.day = 3, Y.month = 4, Y.year = 2016, Y.hour = 10, Y.minute = 31, Y.second = 21}                   i::Int -> Int
test/Test/TestDiffTime.hs view
@@ -21,10 +21,10 @@             traceIO $ show diff3             1 `shouldBe` 1           it "DmyHmP" $ do-            Tz tz1 dmy2 <- now-            traceIO $ show dmy2+            dmy2 <- now+            traceIO $ "TestDiffTime" ++ (show dmy2)             1 `shouldBe` 1           it "dmy_local" $ do-            Tz tz1 l1 <- d+            Tz tz1 l1 <- d'             traceIO $ show l1             1 `shouldBe` 1
test/Test/TestDmyHm.hs view
@@ -1,7 +1,7 @@ module Test.TestDmyHm where  import Test.Hspec-import Data.Time.Hora.Type.DmyHm+import Data.Time.Hora.Type.DatePart   main::IO()@@ -9,17 +9,21 @@        describe "Test.TestDmyHm" $ do           it "case 1" $ do             a1 `shouldSatisfy` (< b1)-        where a1 = DmyHm {+        where a1 = DatePart {                            year = 2016,                            month = 10,                            day = 3,                            hour = 15,-                           minute = 23-                         }::DmyHm Int-              b1 = DmyHm {+                           minute = 23,+                           second = 10,+                           pico = 123456+                         }::DatePart Int+              b1 = DatePart {                            year = 2016,                            month = 10,                            day = 3,                            hour = 15,-                           minute = 24-                         }::DmyHm Int+                           minute = 24,+                           second = 10,+                           pico = 123456+                         }::DatePart Int
test/Test/TestPico.hs view
@@ -5,10 +5,11 @@ 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.Hora.Type.DatePart+import Data.Time.Hora.Type.Time import Data.Time.LocalTime import Data.Time.Hora.Timestamp-+import Prelude as P  main::IO() main = hspec $ do@@ -17,10 +18,10 @@             now >>= traceIO . show             1 `shouldBe` 1           it "parse DmyHmsFormat" $ do-            getCurrentTime >>= pure . parse >>= \(f1::DmyHmp') -> traceIO $ show f1 +            getCurrentTime >>= pure . parse >>= \(f1::DatePart Int) -> traceIO $ show f1              1 `shouldBe` 1           it "parse DmyHmP" $ do-            getCurrentTime >>= pure . parse >>= \(f1::DmyHmp) -> traceIO $ show f1+            getCurrentTime >>= pure . parse >>= \(f1::DatePart Int) -> traceIO $ show f1             1 `shouldBe` 1           it "parse' DmyHmP curr timezone" $ do             getCurrentTime >>= \t1 -> do@@ -31,9 +32,9 @@           it "- pico" $ do             t1 <- getCurrentTime              t2 <- getCurrentTime-            let DmyHmp (_,d1) = parse t1::DmyHmp-                DmyHmp (_,d2) = parse t2::DmyHmp+            let d1 = parse t1::DatePart Integer+                d2 = parse t2::DatePart Integer                 diff1 = t2 F.- t1-                diff2 = d2 F.- d1            -            diff1 `shouldBe` diff2+                diff2 = pico d2 P.- (pico d1)            +            diff1 `shouldBe` (Pico diff2)             
test/Test/TestTime.hs view
@@ -4,11 +4,7 @@ import Test.Hspec import Debug.Trace import Data.Time.Hora.Timestamp-import Text.Regex.Do.Replace.Template  import Prelude hiding ((<),(>))-import Data.Time.Hora.Type.DmyHm-import Data.Time.Clock-import Data.Time.Hora.Format   main::IO()@@ -18,7 +14,7 @@             t >>= traceIO             1 `shouldBe` 1           it "timestamp'" $ do-            t' >>= traceIO+            tf >>= traceIO             1 `shouldBe` 1           it "datetimestamp" $ do             dt >>= traceIO@@ -26,9 +22,3 @@           it "ymd_local" $ do             d >>= traceIO . show             1 `shouldBe` 1-          it "formatUTCTime" $ do-            t1 <- getCurrentTime -            let p1@DmyHm{..} = partFormats-            traceIO $ formatUTCTime (("{day}/{month} {hour}:{minute}") < [("day",day),("month",month),("hour",hour),("minute",minute)])-                        t1  -            1 `shouldBe` 1