{- | Module : Data.Hourglass License : BSD-style Copyright : (c) 2014 Vincent Hanquez <vincent@snarc.org> Stability : experimental Portability : unknown Time-related types and functions. Basic types for representing points in time are t'Elapsed' and t'ElapsedP`. The \'P\' is short for \'precise\'. t'Elapsed' represents numbers of seconds elapsed since the start of the Unix epoch (1970-01-01 00:00:00 UTC). t'ElapsedP' represents numbers of seconds and nanoseconds elapsed. Values of other types representing points in time can be converted to and from values of the t'Elapsed' and t'ElapsedP' types. For example: > d = timeGetElapsed (Date 1955 April 18) :: Elapsed > timeFromElapsed d :: DateTime Local time is represented by t'LocalTime' @t@, parameterised by any other type representing time (for example, t'Elapsed', t'Date' or t'DateTime'). A local time value is augmented by a timezone offset in minutes. For example: > localTime (Date 2014 May 4) 600 -- local time at UTC+10 of 4th May 2014 -} module Data.Hourglass ( -- * Time units NanoSeconds (..) , Seconds (..) , Minutes (..) , Hours (..) -- * Calendar enumerations , Month (..) , WeekDay (..) -- * Points in time -- ** Elapsed time since the start of the Unix epoch , Elapsed (..) , ElapsedP (..) -- ** Date, time, and date and time , Date (..) , TimeOfDay (..) , DateTime (..) -- ** Local time and timezone-related , LocalTime , Timezone (..) , TimezoneOffset (..) , timezoneOffsetToSeconds , UTC (..) , timezone_UTC , TimezoneMinutes (..) -- *** Constructors , localTime , localTimeFromGlobal , localTimeSetTimezone -- *** Accessors , localTimeUnwrap , localTimeGetTimezone -- ** Miscellaneous calandar functions , isLeapYear , getWeekDay , getDayOfTheYear , daysInMonth -- * Periods of time , Duration (..) , Period (..) , timeAdd , timeDiff , timeDiffP , dateAddPeriod -- * Conversion of points in time , Time (..) , Timeable (..) , timeConvert , timeGetDate , timeGetDateTimeOfDay , timeGetTimeOfDay , localTimeConvert , localTimeToGlobal -- * Conversion of periods of time , TimeInterval (..) -- * Parsing and Printing -- ** Format strings , TimeFormatElem (..) , TimeFormatFct (..) , TimeFormatString (..) , TimeFormat (..) -- ** Common built-in formats , ISO8601_Date (..) , ISO8601_DateAndTime (..) -- ** Format methods , timePrint , timeParse , timeParseE , localTimePrint , localTimeParse , localTimeParseE ) where import Time.Calendar ( daysInMonth, getDayOfTheYear, getWeekDay, isLeapYear ) import Time.Format import Time.LocalTime import Time.Time import Time.Timezone import Time.Types