hourglass: simple performant time related library
Simple time library focusing on simple but powerful and performant API
The backbone of the library are the Timeable and Time type classes.
Each Timeable instances can be converted to type that has a Time instances, and thus are different representations of current time.
[Skip to Readme]
Modules
[Index] [Quick Jump]
Downloads
- hourglass-0.2.12.tar.gz [browse] (Cabal source package)
- Package description (revised from the package)
Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
- No Candidates
| Versions [RSS] | 0.1.0, 0.1.1, 0.1.2, 0.2.0, 0.2.1, 0.2.2, 0.2.3, 0.2.4, 0.2.5, 0.2.6, 0.2.7, 0.2.8, 0.2.9, 0.2.10, 0.2.11, 0.2.12 |
|---|---|
| Change log | CHANGELOG.md |
| Dependencies | base (>=4 && <5), deepseq , Win32 [details] |
| License | BSD-3-Clause |
| Copyright | Vincent Hanquez <vincent@snarc.org> |
| Author | Vincent Hanquez <vincent@snarc.org> |
| Maintainer | vincent@snarc.org |
| Revised | Revision 1 made by Bodigrim at 2024年05月26日T20:03:14Z |
| Category | Time |
| Home page | https://github.com/vincenthz/hs-hourglass |
| Source repo | head: git clone https://github.com/vincenthz/hs-hourglass |
| Uploaded | by VincentHanquez at 2018年08月24日T19:46:48Z |
| Distributions | Arch:0.2.12, Debian:0.2.12, Fedora:0.2.12, FreeBSD:0.2.9, LTSHaskell:0.2.12, NixOS:0.2.12, Stackage:0.2.12, openSUSE:0.2.12 |
| Reverse Dependencies | 31 direct, 3718 indirect [details] |
| Downloads | 112095 total (74 in the last 30 days) |
| Rating | 2.0 (votes: 2) [estimated by Bayesian average] |
| Your Rating |
|
| Status | Docs available [build log] Last success reported on 2018年08月24日 [all 1 reports] |
Readme for hourglass-0.2.12
[back to package description]hourglass
Hourglass is a simple time library.
Documentation: hourglass on hackage
Design
Key parts of the design are the Timeable and Time typeclasses. Time representations of the same time values are interchangeable and easy to convert between each other. This also allows the user to define new time types that interact with the same functions as the built-in types.
For example:
let dateTime0 =
DateTime { dtDate = Date { dateYear = 1970, dateMonth = January, dateDay = 1 }
, dtTime = TimeOfDay {todHour = 0, todMin = 0, todSec = 0, todNSec = 0 }}
elapsed0 = Elasped 0
> timeGetElapsed elapsed0 == timeGetElapsed dateTime0
True
> timeGetDate elapsed0 == timeGetDate dateTime0
True
> timePrint "YYYY-MM" elapsed0
"1970-01"
> timePrint "YYYY-MM" dateTime0
"1970-01"
Hourglass has the same limitations as your system:
- On 32 bit linux, you can't get a date after the year 2038.
- In Windows 7, you can't get the date before the year 1601.
Comparaison with time
- Getting posix time:
-- With time
import Data.Time.Clock.POSIX
ptime <- getPOSIXTime
-- With hourglass
import System.Hourglass
ptime <- timeCurrent
- Getting the current year:
-- With time
import Data.Time.Clock
import Data.Time.Calendar
currentYear <- (\(y,_,_) -> y) . toGregorian . utcDay <$> getCurrentTime
-- With hourglass
import System.Hourglass
import Data.Time
currentYear <- dateYear . timeGetDate <$> timeCurrent
- Representating "4th May 1970 15:12:24"
-- With time
import Data.Time.Clock
import Date.Time.Calendar
let day = fromGregorian 1970 5 4
diffTime = secondsToDiffTime (15 * 3600 + 12 * 60 + 24)
in UTCTime day diffTime
-- With hourglass
import Date.Time
DateTime (Date 1970 May 4) (TimeOfDay 15 12 24 0)