diff --git a/PublicDomain b/PublicDomain
new file mode 100644
--- /dev/null
+++ b/PublicDomain
@@ -0,0 +1,24 @@
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or
+distribute this software, either in source code form or as a compiled
+binary, for any purpose, commercial or non-commercial, and by any
+means.
+
+In jurisdictions that recognize copyright laws, the author or authors
+of this software dedicate any and all copyright interest in the
+software to the public domain. We make this dedication for the benefit
+of the public at large and to the detriment of our heirs and
+successors. We intend this dedication to be an overt act of
+relinquishment in perpetuity of all present and future rights to this
+software under copyright law.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+For more information, please refer to <http://unlicense.org>
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,2 @@
+import Distribution.Simple
+main = defaultMain
diff --git a/changelog.md b/changelog.md
new file mode 100644
--- /dev/null
+++ b/changelog.md
@@ -0,0 +1,3 @@
+#####   1.0
+    initial version
+        
diff --git a/hora.cabal b/hora.cabal
new file mode 100644
--- /dev/null
+++ b/hora.cabal
@@ -0,0 +1,87 @@
+name:                hora
+version:             1.0
+build-type:          Simple
+cabal-version:       >=1.10
+
+synopsis:            date time
+description:         date time functions to pico precision
+author:              Imants Cekusins
+maintainer:          Imants Cekusins
+category:            System, Time
+license:             PublicDomain
+license-file:        PublicDomain
+extra-source-files:  changelog.md
+
+homepage:            https://github.com/ciez/hora
+source-repository   head
+   type: git
+   location: https://github.com/ciez/hora.git
+
+
+library
+  exposed-modules:
+          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.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
+                       
+  hs-source-dirs:      src
+  default-language:    Haskell2010
+  default-extensions:   FlexibleInstances
+                        MultiParamTypeClasses
+                        TypeSynonymInstances
+                        BangPatterns
+                        InstanceSigs
+                        OverloadedStrings
+                        FunctionalDependencies
+                        StandaloneDeriving
+                        ScopedTypeVariables
+                        ConstraintKinds
+                        GeneralizedNewtypeDeriving
+                        RecordWildCards
+                       
+
+test-suite spec
+  default-language:Haskell2010
+  type: exitcode-stdio-1.0
+  ghc-options:  -fwarn-unused-imports
+  hs-source-dirs: test, src
+  default-extensions:   FlexibleInstances
+                        MultiParamTypeClasses
+                        TypeSynonymInstances
+                        BangPatterns
+                        InstanceSigs
+                        OverloadedStrings
+                        FunctionalDependencies
+                        StandaloneDeriving
+                        ScopedTypeVariables
+                        ConstraintKinds
+                        GeneralizedNewtypeDeriving
+                        RecordWildCards
+
+  main-is: Main.hs
+  other-modules:
+          Test.TestConvert
+          Test.TestDiffTime
+          Test.TestFuture
+          Test.TestTime
+          Test.TestDmyHm
+          Test.TestPico
+
+  build-depends:  base >= 4.8,
+                  hspec >= 2.1.7,
+                  QuickCheck >= 2.8.1,
+                  time,
+                  regex-do                          
diff --git a/src/Data/Time/Hora/Convert.hs b/src/Data/Time/Hora/Convert.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Time/Hora/Convert.hs
@@ -0,0 +1,61 @@
+module Data.Time.Hora.Convert 
+    (-- ** multipliers
+    picoSec,
+    picoMs,
+    msSec,
+    -- ** conversion
+    toPico,
+    toMilli,
+    toSec,
+    -- ** diff time
+    toDiffTime,
+    nominalDiff        
+    ) where
+
+import Data.Ratio
+import Data.Time.Clock
+import Data.Time.Hora.Type.Time
+
+
+-- | pico in 1 second
+picoSec::Integral a => a
+picoSec = 1000000000000     --  12
+
+-- | pico in 1 milli
+picoMs::Integral a => a
+picoMs = 1000000000         --  9
+
+-- | milli in 1 sec
+msSec::Integral a => a
+msSec = 1000
+
+{- | >>> toPico (Milli 1) 
+    1000000000 -}
+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::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::TwoInt a b => TimeSpan a -> b
+toSec (Pico i0) = fromIntegral $ i0 `div` picoSec
+toSec (Milli i0) = fromIntegral $ i0 `div` msSec
+toSec (Sec i0) = fromIntegral $ i0
+
+
+toDiffTime::Integral a => TimeSpan a -> DiffTime
+toDiffTime (Sec s0) = secondsToDiffTime $ fromIntegral s0
+toDiffTime (Pico s0) = picosecondsToDiffTime $ fromIntegral s0
+toDiffTime t0@(Milli s0) = picosecondsToDiffTime $ toPico t0
+
+
+nominalDiff::Integral a => TimeSpan a -> NominalDiffTime
+nominalDiff ts0 = let s1 = toPico ts0::Integer
+                in fromRational $ s1 % picoSec
diff --git a/src/Data/Time/Hora/Format.hs b/src/Data/Time/Hora/Format.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Time/Hora/Format.hs
@@ -0,0 +1,83 @@
+module Data.Time.Hora.Format where
+
+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
+
+
+{- | yyyymmdd      -}
+ymd::TimeZone -> UTCTime -> Tz String
+ymd 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])
+    
+
+{- | format UTCTime just as you need it. uses 'defaultTimeLocale' 
+
+@
+import Text.Regex.Do.Replace.Template 
+import Prelude hiding ((\<),(\>))
+...
+
+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 
+    -> 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"
+    }
diff --git a/src/Data/Time/Hora/Future.hs b/src/Data/Time/Hora/Future.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Time/Hora/Future.hs
@@ -0,0 +1,34 @@
+module Data.Time.Hora.Future where
+
+import Data.Time.Clock
+import Data.Time.Hora.Type.Time
+import Data.Time.Hora.Convert
+
+
+{- | 'getCurrentTime' +/- offset
+
+from unit test:
+
+@
+getCurrentTime
+futureUTCTime $ Milli 100
+futureUTCTime $ Sec 3
+
+2016-12-12 15:34:03.138798524 UTC
+2016-12-12 15:34:03.23893359 UTC
+2016-12-12 15:34:06.138978355 UTC
+@   -}
+futureUTCTime::Integral a => TimeSpan a -> IO UTCTime
+futureUTCTime ts0 = getCurrentTime >>=
+                pure . (addUTCTime diff1)
+    where diff1 = nominalDiff ts0
+
+
+-- | 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
+                
diff --git a/src/Data/Time/Hora/Parse.hs b/src/Data/Time/Hora/Parse.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Time/Hora/Parse.hs
@@ -0,0 +1,47 @@
+module Data.Time.Hora.Parse where
+
+import Data.Time.Hora.Type.DmyHm 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
+
+
+
+{- | specified time in specified zone, to 'DmyHmP' -}
+parse'::TimeZone -> UTCTime -> Tz DmyHmp
+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
+                   }
+        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)
+
diff --git a/src/Data/Time/Hora/Timestamp.hs b/src/Data/Time/Hora/Timestamp.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Time/Hora/Timestamp.hs
@@ -0,0 +1,76 @@
+module Data.Time.Hora.Timestamp 
+    (-- ** numerical
+    now,
+    -- ** string
+    t,
+    t',
+    dt,
+    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.Time
+import Data.Time.Hora.Parse
+
+
+{-| time with Pico in current timezone 
+
+>>> now
+Tz CET (DmyHm {day = 12, month = 12, year = 2016, hour = 19, minute = 33},15.546562180000)
+-}
+now::IO (Tz DmyHmp)
+now = withTimeZone parse'
+
+
+
+{- | timestamp 
+
+second.fraction. __UTC__
+
+>>> t
+14:41:29.785834836
+-}
+t::IO String
+t = do
+      utc0 <- getCurrentTime
+      pure $ formatUTCTime hmsFraction utc0
+
+
+{- | timestamp 
+
+second.fraction. __UTC__
+
+>>> t'
+14:41:29 .785834836
+-}
+t'::IO String
+t' = do
+      utc0 <- getCurrentTime
+      pure $ formatUTCTime hmsFraction' utc0
+
+
+{- | date, time (to second)  __UTC__
+
+>>> dt
+2016-12-12 14:43:13
+-}
+dt::IO String
+dt = do
+      utc0 <- getCurrentTime
+      pure $ formatUTCTime ymdHms utc0
+
+
+
+
+{- | date stamp /yyyymmdd/   
+
+__local__ timezone
+
+>>> d
+Tz CET "20161212"
+-}
+d::IO (Tz String)
+d = withTimeZone ymd
+
diff --git a/src/Data/Time/Hora/Type/DmyHm.hs b/src/Data/Time/Hora/Type/DmyHm.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Time/Hora/Type/DmyHm.hs
@@ -0,0 +1,64 @@
+module Data.Time.Hora.Type.DmyHm where
+
+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 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)
+        } 
+
+deriving instance Show (DmyHm Int)
+deriving instance Show (DmyHm String)
+
+
+-- | @(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)   --  dmyhm, pico
+
+
+{- | 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)
+         
+            
diff --git a/src/Data/Time/Hora/Type/Time.hs b/src/Data/Time/Hora/Type/Time.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Time/Hora/Type/Time.hs
@@ -0,0 +1,15 @@
+module Data.Time.Hora.Type.Time where
+
+import Data.Time.LocalTime
+
+
+data TimeSpan a = Sec a
+    | Pico a
+    | Milli a deriving (Show, Eq, Ord)
+
+
+data Tz a = Tz TimeZone a  deriving Show
+
+
+-- | constraint
+type TwoInt a b = (Integral a, Integral b)
diff --git a/src/Data/Time/Hora/Type/YmdHms.hs b/src/Data/Time/Hora/Type/YmdHms.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Time/Hora/Type/YmdHms.hs
@@ -0,0 +1,22 @@
+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)
+             
diff --git a/src/Data/Time/Hora/WithTimeZone.hs b/src/Data/Time/Hora/WithTimeZone.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Time/Hora/WithTimeZone.hs
@@ -0,0 +1,18 @@
+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
diff --git a/test/Main.hs b/test/Main.hs
new file mode 100644
--- /dev/null
+++ b/test/Main.hs
@@ -0,0 +1,17 @@
+module Main where
+
+import qualified Test.TestDiffTime as T
+import qualified Test.TestConvert as Conv
+import qualified Test.TestFuture as Fut
+import qualified Test.TestTime as Tt
+import qualified Test.TestPico as P
+import qualified Test.TestDmyHm as D 
+
+main::IO()
+main = do
+        T.main
+        Conv.main
+        Fut.main
+        Tt.main
+        P.main
+        D.main
diff --git a/test/Test/TestConvert.hs b/test/Test/TestConvert.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/TestConvert.hs
@@ -0,0 +1,43 @@
+module Test.TestConvert where
+
+import Test.Hspec
+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()
+main = do 
+    test
+    doc
+
+
+
+test::IO()
+test = hspec $ do
+       describe "Case.Convert" $ do
+          it "pico 1" $ do
+              toPico (Sec $ i 12) `shouldBe` (toPico $ Milli $ toMilli $ Sec $ i 12)
+              toMilli (Sec $ i 17) `shouldBe` (toMilli $ Pico $ toPico $ Sec $ i 17)
+              toMilli (Milli $ i 170) `shouldBe` (toMilli $ Pico $ toPico $ Milli $ i 170)
+              s1 `shouldBe` i3
+        where p1 = toPico (Sec i3)::Int
+              m1 = toMilli (Pico p1)::Int
+              s1 = toSec (Milli m1)::Int
+              i3 = 3::Int
+
+doc::IO()
+doc = hspec $ do
+    describe "doc Convert" $ do
+        it "toPicos milli" $ toPico (Milli 1) `shouldBe` 1000000000
+        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
+i = id
diff --git a/test/Test/TestDiffTime.hs b/test/Test/TestDiffTime.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/TestDiffTime.hs
@@ -0,0 +1,30 @@
+module Test.TestDiffTime where
+
+import Test.Hspec
+import Debug.Trace
+import Data.Time.Clock
+import Control.Concurrent
+import Data.Time.Hora.Timestamp
+import Data.Time.Hora.Future
+import Data.Time.Hora.Type.Time
+
+
+
+main::IO()
+main = hspec $ do
+       describe "TestDiffTime" $ do
+          it "diff time" $ do
+            t1 <- getCurrentTime
+            threadDelay 7000
+            t2 <- getCurrentTime
+            let diff3 = timeDiffMs t1 t2
+            traceIO $ show diff3
+            1 `shouldBe` 1
+          it "DmyHmP" $ do
+            Tz tz1 dmy2 <- now
+            traceIO $ show dmy2
+            1 `shouldBe` 1
+          it "dmy_local" $ do
+            Tz tz1 l1 <- d
+            traceIO $ show l1
+            1 `shouldBe` 1
diff --git a/test/Test/TestDmyHm.hs b/test/Test/TestDmyHm.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/TestDmyHm.hs
@@ -0,0 +1,25 @@
+module Test.TestDmyHm where
+
+import Test.Hspec
+import Data.Time.Hora.Type.DmyHm
+
+
+main::IO()
+main = hspec $ do
+       describe "Test.TestDmyHm" $ do
+          it "case 1" $ do
+            a1 `shouldSatisfy` (< b1)
+        where a1 = DmyHm {
+                           year = 2016,
+                           month = 10,
+                           day = 3,
+                           hour = 15,
+                           minute = 23
+                         }::DmyHm Int
+              b1 = DmyHm {
+                           year = 2016,
+                           month = 10,
+                           day = 3,
+                           hour = 15,
+                           minute = 24
+                         }::DmyHm Int
diff --git a/test/Test/TestFuture.hs b/test/Test/TestFuture.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/TestFuture.hs
@@ -0,0 +1,21 @@
+module Test.TestFuture where
+
+import Test.Hspec
+import Debug.Trace
+import Data.Time.Hora.Future
+import Data.Time.Hora.Type.Time
+import Data.Time.Clock
+
+
+
+main::IO()
+main = hspec $ do
+       describe "Case.TestFuture" $ do
+          it "3 second from now" $ do
+            t1 <- getCurrentTime
+            traceIO $ show t1
+            f2 <- futureUTCTime $ Milli 100
+            traceIO $ show f2
+            f3 <- futureUTCTime $ Sec 3
+            traceIO $ show f3
+            1 `shouldBe` 1
diff --git a/test/Test/TestPico.hs b/test/Test/TestPico.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/TestPico.hs
@@ -0,0 +1,30 @@
+module Test.TestPico where
+
+import Test.Hspec
+import Debug.Trace
+import Data.Time.Hora.Parse
+import Data.Time.Clock
+import Data.Time.Hora.Type.DmyHm
+import Data.Time.LocalTime
+import Data.Time.Hora.Timestamp
+
+
+main::IO()
+main = hspec $ do
+       describe "Test.TestPico" $ do
+          it "now" $ do
+            now >>= traceIO . show
+            1 `shouldBe` 1
+          it "parse DmyHmsFormat" $ do
+            getCurrentTime >>= pure . parse >>= \(f1::DmyHmp') -> traceIO $ show f1 
+            1 `shouldBe` 1
+          it "parse DmyHmP" $ do
+            getCurrentTime >>= pure . parse >>= \(f1::DmyHmp) -> traceIO $ show f1
+            1 `shouldBe` 1
+          it "parse' DmyHmP curr timezone" $ do
+            getCurrentTime >>= \t1 -> do
+                z1 <- getCurrentTimeZone 
+                let f1 = parse' z1 t1
+                traceIO $ show f1
+            1 `shouldBe` 1
+            
diff --git a/test/Test/TestTime.hs b/test/Test/TestTime.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/TestTime.hs
@@ -0,0 +1,34 @@
+{-# LANGUAGE NoOverloadedStrings #-}
+module Test.TestTime where
+
+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()
+main = hspec $ do
+       describe "Test.TestTime" $ do
+          it "timestamp" $ do
+            t >>= traceIO
+            1 `shouldBe` 1
+          it "timestamp'" $ do
+            t' >>= traceIO
+            1 `shouldBe` 1
+          it "datetimestamp" $ do
+            dt >>= traceIO
+            1 `shouldBe` 1
+          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                                    
